dom4j解析xml

Dom4j解析XML

1. 基本用法

 参考dom4j使用.

2. 解析方式

2.1 DOM

DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = fact.newDocumentBuilder();
Document doc_xml = builder.parse(new File(“test.xml”));
DOMReader reader_d = new DOMReader(new DOMDocumentFactory());
org.dom4j.dom.DOMDocument doc = (DOMDocument) reader_d.read(doc_xml);

2.2 SAX

SAXReader reader = new SAXReader();
org.dom4j.Document doc = reader.read(new File(“test.xml”));

  SAX解析器不像DOM那样建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问。那些只需要单遍读取内容的应用程序可以从SAX解析中大大受益。而如果要修改和操作XML,则很少使用SAX。
注意
SAXReade r sr = new SAXReader();
sr.setDocumentFactory(new DOMDocumentFactory());
try {
DOMDocument doc = (DOMDocument) sr.read(xmlstring);
}
通过SAXReader也可以创建出DOMDocument,从上面的代码我们可以看出创建dom4j文档树跟采用的DocumentFactory有关

3. DocumentFactory

源码中的介绍:
/*
* DocumentFactory is a collection of factory methods to allow
* easy custom building of DOM4J trees. The default tree that is built uses a
* doubly linked tree.
* The tree built allows full XPath expressions from anywhere on the tree.
*/
  当使用的是DOMDocumentFactory时,创建的节点是DOMElement实例,使用默认的DocumentFactory时,则创建的Dom4j节点树节点都是AbstractElement实例。从Dom4j API中知DOMElement是 org.dom4j.tree.AbstractElement的子类,但是当创建SAXReader或者DOMReader不指定DocumentFactory时,不能将Document转换为DOMDocument.

由于采用的DocumentFactory不同,将直接影响XML元素在内存中的存储结构,导致检索节点是性能有所差异,可以参看http://www.iteye.com/topic/1117606做的测试。

Dom4j中支持的DocumentFactory类型有:
类图

Written with StackEdit.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值