解析XML的4种方式及优缺点比较
2015-06-30 09:53
561 查看
dom, sax是解析xml的底层接口
而jdom和dom4j则是基于底层api的更高级封装
dom是通用的,而jdom和dom4j则是面向java语言的
(方法一). DOM解析说明:为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结
构,
然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内
存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU).
View Code
总结:
1.DOM, JDOM在性能上不如SAX, DOM4J, 在小文档情况下还值得考虑使用 DOM 和 JDOM。
2.DOM 实现广泛应用于多种编程语言。它还是许多其它与 XML 相关的标准的基础,因为它正式获得 W3C 推荐(与基于非标准的 Java 模型相对),所以在某些类型的项目中可能也需要它(如在 javascript 中使用 DOM)。
3.SAX 的高效取决于特定的解析方式,不用事先调入整个文档,占用资源少。
4.如果不考虑可移植性, 首先考虑使用DOM4J。
而jdom和dom4j则是基于底层api的更高级封装
dom是通用的,而jdom和dom4j则是面向java语言的
(方法一). DOM解析说明:为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结
构,
然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内
存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU).
import java.io.File; import java.io.IOException; import java.util.Iterator; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.DOMReader; import org.dom4j.io.SAXReader; import org.xml.sax.SAXException; public class Dom4jDemo { private final static String xmlPath = "D:\\bom.xml"; public static void parseElement() throws DocumentException, ParserConfigurationException, SAXException, IOException { // 方式一 DOM // DocumentBuilderFactory factory = // DocumentBuilderFactory.newInstance(); // DocumentBuilder builder = factory.newDocumentBuilder(); // org.w3c.dom.Document domDoc = builder.parse(xmlPath); // DOMReader domReader = new DOMReader(); // Document document = domReader.read(domDoc); //方式二 SAX(常用) SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File(xmlPath)); Element rootEl = document.getRootElement(); for (Iterator iterator = rootEl.elementIterator("Child"); iterator .hasNext();) { Element e = (Element) iterator.next(); System.out.print("Code -> " + e.attributeValue("Code")); System.out.println(" Quantity -> " + e.elementText("Quantity")); } } }
View Code
总结:
1.DOM, JDOM在性能上不如SAX, DOM4J, 在小文档情况下还值得考虑使用 DOM 和 JDOM。
2.DOM 实现广泛应用于多种编程语言。它还是许多其它与 XML 相关的标准的基础,因为它正式获得 W3C 推荐(与基于非标准的 Java 模型相对),所以在某些类型的项目中可能也需要它(如在 javascript 中使用 DOM)。
3.SAX 的高效取决于特定的解析方式,不用事先调入整个文档,占用资源少。
4.如果不考虑可移植性, 首先考虑使用DOM4J。
相关文章推荐
- bzoj2489
- D3学习指导
- linux模块导出符号 EXPORT_SYMBOL_GPL EXPORT_SYMBOL .
- 我的WCF之旅(1):创建一个简单的WCF程序
- JS日期比较函数
- [VLFeat]Fisher vector提取matlab代码
- XMPP笔记1—环境配置
- 图片转成流媒体视频操作记录(1)
- 手工配置Service的过程中。
- JavaScript-tips
- Tiny框架增加RESTful访问支持
- OEL6.5 + oracle11gR2 RAC ASM磁盘识别的multipathd解决方案
- 单例模式
- FTP服务器搭建
- 自动构建和部署 MobileFirst Platform 工件,以此作为持续交付过程的一部分
- iOS 得到系统当前时间
- CSS-tips
- 双系统如何删除Linux,恢复Windows从MBR引导启动?
- 模板文件是否有大小限制?
- 矿池孤块率优化