微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

四种不同的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解析处理工作

原文地址:https://www.jb51.cc/xml/298120.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。