Dom4j中XPath相对路径的使用
XPath是用来表达XML文档树各种元素的位置的描述。通过XPath直接获取文档元素比较准确,直接,效率也高。
XPath的路径分相对的和绝对的,绝对路径以“/"开始,相对路径以“./”或直接以元素的名开头。
样例XML文件如下:
<?xml version = "1.0" encoding = "UTF-8"?>
< persons>
<country>china</country>
<city>zhengzhou</city>
<person>
<id>101</id>
<name>zhangsan</name>
<contacts>
<email>zhangsan@yahoo.cn</email>
<tel>0371-85555555</tel>
<qq>6683965</qq>
</contacts>
<addresses>
<address>
<zipcode>450000</zipcode>
<street>aaa</street>
</address>
<address>
<zipcode>450001</zipcode>
<street>bbb</street>
</address>
</addresses>
</person>
<person>
<id>102</id>
<name>lisi</name>
<contacts>
<email>lisi@yahoo.cn</email>
<tel>0371-68554545</tel>
<qq>224488</qq>
</contacts>
<addresses>
<address>
<zipcode>450002</zipcode>
<street>xxx</street>
</address>
<address>
<zipcode>450003</zipcode>
<street>yyy</street>
</address>
</addresses>
</person>
< /persons>
测试Java代码如下:
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
/**
* XML相对路径测试
*
* @author leizhimin 2010-1-6 11:10:54
*/
public class TestDom {
public static void main(String[] args) {
try {
File xmlf = new File("D://person.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(xmlf);
Element e_plan = (Element) doc.selectSingleNode("/persons");
Element e_id = (Element) e_plan.selectSingleNode("./country");
Element e_id1 = (Element) e_plan.selectSingleNode("country");
List<Element> eplist = e_plan.selectNodes("/persons/person");
for (Element ep : eplist) {
String path = ep.getPath();
Element id = (Element) ep.selectSingleNode("id");
System.out.println(id.getText());
}
System.out.println("---------------");
} catch (Exception e) {
// TODO: handle exception
}
}
}
输出结果:
101
102
---------------