java解析xml文件的两种方式

1:DOM

原理:把整个文档加载到内存,转化成dom树,之后应用程序可以随机的访问dom树的任何数据,灵活 快,但消耗内存

一个简单的xml

使用java解析

//builder工厂

DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();try{//builder

DocumentBuilder builder =factory.newDocumentBuilder();//解析xml文档

Document doc = builder.parse("src/xmls/demo.xml");//根据标签名得到元素

NodeList list = doc.getElementsByTagName("student");//因为只有一个student 所以获取第一个//Node node=list.item(0);//element继承自node

Element student = (Element) list.item(0);//第一个元素//姓名

Element name = (Element) student.getElementsByTagName("姓名").item(0);

String nameValue=name.getFirstChild().getNodeValue();//年龄

Element age = (Element) student.getElementsByTagName("age").item(0);

String ageValue=age.getFirstChild().getNodeValue();

System.out.println(ageValue);//性别

Element sex = (Element) student.getElementsByTagName("sex").item(0);

String sexValue=sex.getFirstChild().getNodeValue();

String attib= sex.getAttribute("id");

System.out.println(sexValue);

System.out.println(attib);

}catch(Exception e) {

e.printStackTrace();

}

节点 属性 文本 都可以拿到了,复杂的xml也是使用这么几个方法。

2. sax

只能read 不能edit 相对于DOM方式来说 不会占用太多的内存, 对xml文档进行顺序扫描,有事件发生

输出结果:

public class SaxDemo extends DefaultHandler {

@Override

public void startDocument() throws SAXException {

System.out.println("文档开始。。。");

}

@Override

public void endDocument() throws SAXException {

System.out.println("文档结束。。。");

}

@Override

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

System.out.println("元素开始。。"+qName);

}

@Override

public void endElement(String uri, String localName, String qName) throws SAXException {

System.out.println("元素结束。。。"+qName);

}

/**

* 文本结点

* @param ch

* @param start

* @param length

* @throws SAXException

*/

@Override

public void characters(char[] ch, int start, int length) throws SAXException {

System.out.println(new String(ch,start,length));

}

public static void main(String[] args) {

SAXParserFactory factory =SAXParserFactory.newInstance();

SAXParser parser= null;

try {

parser = factory.newSAXParser();

try {

parser.parse("src/xmls/demo.xml",new SaxDemo());

} catch (IOException e) {

e.printStackTrace();

}

} catch (ParserConfigurationException e) {

e.printStackTrace();

} catch (SAXException e) {

e.printStackTrace();

}

}

java sax xml文件解析_java解析xml文件-DOM/SAX相关推荐

  1. java怎么xml文件解析_Java对Xml文件解析

    JAVA 解析 XML 通常有两种方式,DOM 和 SAX. DOM 虽然是 W3C 的标准,提供了标准的解析方式,但它的解析效率一直不尽如人意,因为使用DOM解析XML时,解析器读入整个文档并构建一 ...

  2. java解析xml文档_Java解析xml文件

    读xml文件: xml文件内容: Java Eclipse Swift Xcode C# Visual Studio 代码: package XMLParse; import java.io.File ...

  3. java对xml文件的解析_Java对XML文件的解析

    XML简介 围绕XML涉及到四方面的技术: 1.数据定义Schema.DTD 2.数据解析DOM.SAX两种解析模型 3.样式风格XSTL,使用XSTL可以将XML文件中存放的内容按照指定的样式显示为 ...

  4. java解析xml生成表格_JAVA读取XML文件并解析 以及 JAVA生成文本文件输出

    废话不多说,直接上代码及说明吧! package Dao; import java.io.File; import java.util.ArrayList; import java.util.List ...

  5. java sax解析_Java 解析xml 之 SAX解析

    SAX是什么 SAX是一种快速读写XML数据的方式. 局限 1.SAX分析器在解析xml文档时,触发了一系列事件,因为事件本身是有时序性的.因此SAX一旦经过了某个元素,没有办法返回再去访问. 2.S ...

  6. java xml解析_Java解析XML(4种方法)

    xml文件 <?xml version="1.0" encoding="utf-8" ?><class><student>& ...

  7. 安卓XML解析的几种方式(DOM,SAX,PULL..)

    在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull) ...

  8. java xml特殊字符转义_Java中将xml文件转化为json遇到特殊字符会报错!

    前言: 我们在项目开发中,有时候调用别人提供的接口,接收到的数据是xml,这时候为了方便后续开发中的使用,需要解析xml并把数据转化成json,今天这篇文章就讲解下如何把xml转化成json,并在这个 ...

  9. java xml读取方法_Java读取XML文件的方法

    Java读取XML文件的方法 发布时间:2020-08-19 14:39:08 来源:亿速云 阅读:63 作者:小新 这篇文章主要介绍了Java读取XML文件的方法,具有一定借鉴价值,需要的朋友可以参 ...

  10. java json 解析_Java解析JSON的四种方式

    一.什么是JSON JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于阅读和编写,同时也易于解析和 ...

最新文章

  1. linux wc 命令简介
  2. iOS 解决1。返回时的黑边问题、2。controller的抖动问题
  3. 代码重构阅读心得[转]
  4. java基础提升篇:深入分析Java的序列化与反序列化
  5. [云炬python3玩转机器学习笔记] 2-4批量学习、咋西安学习、参数学习和非参数学习
  6. Python学习——02-Python基础——【9-面向对象进阶】——isinstance(obj,cls)、反射等...
  7. css链接,列表,表格
  8. 怎样分析 JAVA 的 Thread Dumps
  9. controller 中@autowired 报错_Spring中常用注解
  10. Mac可读可写remount硬盘
  11. intouch的报警怎么发到微信上
  12. 毕啸南专栏 | 对话阿里王坚:数据价值是新大陆,新技术将重构互联网
  13. 学习python的微信公众号_Python学习一:微信公众号验证
  14. Postman代理设置
  15. Linux C语言编译警告:control reaches end of non-void function
  16. Excel 2010 VBA 入门 064 按照关键字批量创建超链接
  17. python使用fpdf创建pdf:写入hello world、嵌入图片
  18. 做一个共享浏览器,把seesion克隆到异地实出1号多开(情报通、微信、生意参谋、火币网、腾讯邮箱亲测有效)不是大牌浏览器不敢用!
  19. WinRAR 7z压缩包处理溢出分析和利用(转)
  20. mac VM fusion7 安装 win7教程

热门文章

  1. Spring Boot 一个依赖搞定 session 共享,没有比这更简单的方案了!
  2. Sublime Text设置快捷键让html文件在浏览器打开
  3. GitHub博客开发上线实战
  4. vue解决字符串模板@click无效的问题
  5. spring+mybatis+springMVC+redis缓存+mysql+bootstrap+异步提交----联系人小demo
  6. mysql修改表结构例子_mysql修改表结构方法实例详解
  7. C语言 const 和 define 区别 - C语言零基础入门教程
  8. BugkuCTF-MISC题神秘的文件
  9. java jackson 注解,java – 如何使用Jackson注释序列化此JSON?
  10. main()函数参数