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"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<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实现有个简单的认识了吧。