一、原理不同:
DOM解析原理:一次性把xml文档加载进内存,然后在内存中构建Document树。 对内存要求比较要。
缺点: 不适合读取大容量的xml文件,容易导致内存溢出。
SAX解析原理: 加载一点,读取一点,处理一点。对内存要求比较低。
二、SAX
SAX解析工具-Sun公司提供的。内置在jdk中。org.xml.sax.*
三、核心的API:
SAXParser类: 用于读取和解析xml文件对象
parse(File f,DefaultHandler dh)方法: 解析xml文件
参数一: File:表示 读取的xml文件。
参数二: DefaultHandler: SAX事件处理程序。使用DefaultHandler的子类
四、应用
1.创建SAXParser对象
SAXParserparser=SAXParserFactory.newInstance().newSAXParser();
2.调用parse方法
parser.parse(newFile("./src/contact.xml"),newMyDefaultHandler());
3.DefaultHandler类的API:
void startDocument() : 在读到文档开始时调用
void endDocument() :在读到文档结束时调用
void startElement(String uri, String localName, String qName, Attributes attributes) :读到开始标签时调用
void endElement(String uri, String localName, String qName) :读到结束标签时调用
void characters(char[] ch, int start, int length) : 读到文本内容时调用
五、对比
============DOM解析 vs SAX解析============
DOM解析SAX解析
原理: 一次性加载xml文档,不适合大容量的文件读取原理: 加载一点,读取一点,处理一点。适合大容量文件的读取
DOM解析可以任意进行增删改成SAX解析只能读取
DOM解析任意读取任何位置的数据,甚至往回读SAX解析只能从上往下,按顺序读取,不能往回读
DOM解析面向对象的编程方法(Node,Element,Attribute),Java开发者编码比较简单。SAX解析基于事件的编程方法。java开发编码相对复杂。
六、总结
1)Dom4j修改xml文档
new XMLWrier();
......
2)xPath技术: 快速查询xml节点
selectNodes()
selectSinglNode();
xpath表达式语言
3) SAX解析
SAXParser parse
parser()
DefaultHandler类:
startElement();
characters();
endElement();