Dom4j入门指南(2)
XPath |
XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。 XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。因此,对 XPath 的理解是很多高级 XML 应用的基础。 下面让我们来看看dom4j对Xpath标准是怎样实现的。在dom4j中,xpath表达式可以进行描述整个Document或是任何的Node(节点),其中包括Attribute(属性)、Element。而这个功能强大而复杂的xpath标准,在dom4j中你只需要一行代码就搞定。看到这里你是不是开始心痒痒了,呵呵,不急,下面咋们来练练,看招 为了能够让大家对xpath有个清楚的认识,我从网上找了个比较复杂的xml来做示例。下面是xml原文
<?xml version="1.0" encoding="ISO-8859-1" ?> <wml> <template> <do type="options" label="Back"> <prev/> </do> </template> <card id="JY"> <onevent type="onenterbackward"> <prev/> </onevent> <do type="accept"> <go href="#display_fav"/> </do> <p>Pick your fav Book: <select name="fav" title="Stooges"> <option value="Xiao">Xiao ao jiang hu</option> <option value="She">She diao ying xiong</option> <option value="Lu">Lu ding ji</option> <option value="Shen">Shen diao xia lv</option> </select> </p> </card> </wml>
我把它放到了D盘下,命名为example.xml。以下是代码:
package com.mgoann.dom4j; import java.io.File; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; public class Mydom4j { public static void main(String[] args) { try { Mydom4j dom = new Mydom4j(); Document doc = dom.parse(new File("d:/example.xml")); dom.barXpath(doc); } catch (DocumentException e) { e.printStackTrace(); } } public Document parse(File file) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(file); return document; } public void barXpath(Document document) { List selectNodes = document.selectNodes( "/wml/card/p/select/option" ); for(Iterator it = selectNodes.iterator(); it.hasNext();) { print((Element)it.next()); } Node node = document.selectSingleNode( "/wml/card/p/select/option" ); print(node); String value = node.valueOf( "@value" ); print(value); } public void print(Node node) { System.out.println("================================"); System.out.println(node.asXML()); } public void print(String str) { System.out.println("================================"); System.out.println(str); } }
以上程序输出结果:
================================ <option value="Xiao">Xiao ao jiang hu</option> ================================ <option value="She">She diao ying xiong</option> ================================ <option value="Lu">Lu ding ji</option> ================================ <option value="Shen">Shen diao xia lv</option> ================================ <option value="Xiao">Xiao ao jiang hu</option> Xiao
到现在大家应该对dom4j的xpath实现有个简单的认识了吧。