JAVA之DOM和SAX解析器

xml的解析器:
DOM解析:Document Object Module 文档对象模型
SAX解析:Simple API for XML 用于对 XML 进行语法分析的事件驱动的简单 API


JAXP:Java API for XML Processing,
用于XML文档处理的使用Java语言编写的编程接口。
不提供语法分析功能,却提供到达这些语法分析器和结果的方式。
(标准和规范)

DOM解析:文档对象模型
一次性读入内存,形成树状结构
可以反复频繁访问
不适合操作大的xml文件


DOM解析的API:
Node :文档树中的单个节点
Document:表示整个 HTML 或 XML 文档
Element:表示 HTML 或 XML 文档中的一个元素
NodeList:文档树中的一组节点

得到Document对象:
1.创建解析器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2.通过解析器工厂创建解析器对象
DocumentBuilder builder = factory.newDocumentBuilder();
3.解析xml文件,得到Document对象
Document document=builder.parse(String path);

NodeList类常用方法:
int getLength():列表中的节点数。
Node item(int index): 返回集合中的第 index 个项。

Document类生成xml文档常用方法:
createElement()创建DOM节点
createAttribute()创建节点属性
setTextContent() 设置节点文本
appendChild()添加子节点


DOM解析:
优点:常驻内存,对于提高应用程序频繁访问,提高效率
缺点:当xml文件非常复杂的时候,占用太多的内存空间

-----------------------------------------------------------------
SAX解析:事件驱动,顺序解析


步骤:
1.创建解析器工厂
SAXParserFactory factory=SAXParserFactory.newInstance();
2.通过解析器工厂创建解析器对象
SAXParser parser=factory.newSAXParser();
3.解析xml文件 需要传入xml文件对象,和继承DefaultHandler类的子类 重写了读取xml信息的方法

parser.parse(String path,new MyDefaultHandler());

DefaultHandler的方法 这些方法都没有实现 需要继承之后 按照自己的需求实现:
startDocument() 文档起始位置
startElement() 元素起始位置:通过该方法的 qName参数得到元素名
characters() 文本元素:根据参数ch字符数组和int start,int length 索引和长度构造一个string 对象 就是元素的文本内容
endElement() 元素结束位置
endDocument() 文档结束位置

posted @ 2019-02-25 14:42  沙漠里的橘子皮  阅读(457)  评论(0编辑  收藏  举报