使用步骤
1.引入dom4j和xpath表达式地依赖如下:
<!--dom4j解析-->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<!--xpath表达式-->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
复制代码
2.在resource目录下创建book.xml文件用于测试,如下:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="zhangsanid" name="zhangsan">
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book id="lisiid" name="lisi">
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
复制代码
3.创建简单测试类如下:
public class XpathTest {
/**
* XPath 使用路径表达式来选取 XML 文档中的节点或节点集
* <p>
* 经常使用到的路径表达式,如下
* <p>
* nodename 选取此节点的所有子节点。
* / 从根节点选取。
* // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
* . 选取当前节点。
* .. 选取当前节点的父节点。
*
* @ 选取属性。
*/
@Test
public void testXpath() throws DocumentException {
InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("books.xml");
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(resourceAsStream);
//获取根节点,即bookstore
Element rootElement = document.getRootElement();
// 找 xml 根元素的下一级元素
List<Element> selectNodes = rootElement.selectNodes("book");
for (int i = 0; i < selectNodes.size(); i++) {
Element element = selectNodes.get(i);
//获取<book>标签中地id属性值
String id = element.attributeValue("id");
//获取<book>标签中地name属性值
String name = element.attributeValue("name");
System.out.println("id:" + id + ",name:" + name);
}
}
}
复制代码
4.测试结果如下:
id:zhangsanid,name:zhangsan
id:lisiid,name:lisi
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END