dom4j解析xml简单应用

使用步骤

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
喜欢就支持一下吧
点赞0 分享