您的位置:首页 > 其它

解析XML的4种方式及优缺点比较

2015-06-30 09:53 561 查看
dom, sax是解析xml的底层接口

而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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: