Dom4j对XPATH的支持
dom4j中查询可能不是很方便,但是通过引入XPATH,可以大大简化我们队dom元素的查询
1.引入XPATH包(jaxen-1.1-beta-6.jar)(下载一个dom4j,里面就有)
2.引入dom4j jar包
3.DOM4J使用xpath有两种方法
selectNodes()
selectSingleNode()
入门例子:
public static void main(String[] args) throws Exception{
//xpath中提供了selectNodes和selectSingleNode方法,
这种解析xml的方式大大提高了开发效率,建议以后开发可以常用
/*
1. / 代表元素绝对路径
2. //代表 无论层级关系
3. * 任意
4.[]获取元素的位置
具体可以参考xpath的文档
*/
Document document = Dom4jXmlUtils.getDocument("src/person.xml");
//List<Node> nodeList = document.selectNodes("/persons/person");//文档中persons标签下的person标签
//List<Node> nodeList = document.selectNodes("//name");//文档中任意位置的name标签
/*List<Node> nodeList = document.selectNodes("/persons/person/*");
System.out.println(nodeList.size());*/
/*List<Node> nodeList = document.selectNodes("/persons/person/name[1]");
Node node = nodeList.get(1);
System.out.println(node.getText());*/
/*List<Node> nodeList = document.selectNodes("//person/id[@type]");
System.out.println(nodeList.size());*/
Node node = document.selectSingleNode("//person/id");
System.out.println(node.getText());
}
}
Person.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person>
<id type="uuid" length="12" value="001">001</id>
<name>jack</name>
<age>44</age>
<sql><![CDATA[
select * from table
]]></sql>
<dog>狼狗</dog>
</person>
<person>
<id>002</id>
<name from="fg">jim</name>
<age>19</age>
<height>180cm</height>
</person>
</persons>