四种不同的XML解析方法

四种不同的XML解析方法

1 DOM

工厂类:由抽象类javax.xml.parser.DocumentBuilderFactory.newInstance()获取实现工厂类

ACM工厂类:

org.apache.xerces.jaxp.DocumentBuilderFactoryImpl(ie3rdpartylibs.jar/meta-inf/services/javax.xml.parser.DocumentBuilderFactory)

JRE认类:com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

解析结果:

org.w3c.dom.Document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(...)

2 SAX

工厂类:由抽象类javax.xml.parsers.SAXParserFactory.newInstance()获取实现工厂类

ACM工厂类:

org.apache.xerces.jaxp.SAXParserFactoryImpl(ie3rdpartylibs.jar/meta-inf/services/javax.xml.parser.SAXParserFactory)

JRE认类:com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl

解析过程:SAXParserFactory.newInstance().newSAXParser().parse(...)

3 JDOM - 解析器使用Xerces/Crimson

SAX解析器:new org.jdom.input.SAXBuilder()

解析结果:org.jdom.Document = SAXBuilder.build(...)

DOM互换:

org.jdom.Document = org.jdom.input.DOMBuilder.build(org.w3c.dom.Document),org.w3c.dom.Document = org.jdom.output.DOMOutputer.output(org.jdom.Document)

4 DOM4J - 解析器使用Xerces/Crimson/Alfred2

SAX解析器:new org.dom4j.io.SAXReader()

解析结果:org.dom4j.Document = SAXReader.read(...)

DOM互换:

org.dom4j.Document = org.dom4j.io.Domreader.read(org.w3c.dom.Document),org.w3c.dom.Document = org.dom4j.io.DOMWriter.write(org.dom4j.Document)

综合评价:

1. DOM和SAX只是两种不同的解析XML的方式,而不是具体的解析工具,DOM在内存中构建一个完整的XML树,对资源要求高;而SAX是基于XML事件的处理方式,对资源要求低。

2. DOM4J是基于JAVA实现的一种XML解析和处理工具。它性能较好,认应优先采用

3. JDOM也是基于JAVA实现的一种XML解析和处理工具。性能不佳,10M大小以内的文件可以考虑使用。

4. JDOM和DOM4J既能进行XML文件或流解析成DOCUMENT,又能将DOCUMENT保存为XML文件或流,但是它们的Document是自定义的,因此存在不可移植性

5. 如果应用程序只使用DOM、SAX并且符合JAXP的规范接口,则理论上说底层的XML解析器是可以切换的,具有最大的可移植性

6. 解析器有Xerces,Crimson,Alfred2等,它们符合JAXP规范,并且做的是具体的XML解析处理工作

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念