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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值