当我们使用dom4j对xml文件进行解析时,如果需要获取标签内部的元素,首先就要一层一层的获取父节点,如果层数过多,必将造成代码量剧增,开发效率降低。
因此,XPATH就是为了方便我们直接获取到某个元素
常见的XPATH有几种形式:
(1)/AAA/BBB/DDD
表示AAA下的BBB标签下的DDD元素
(2)//BBB
表示文件内所有名称为BBB的元素
(3)/*
表示所有元素
(4)AAA[1]
表示AAA标签下的第一个元素
(5)AAA[last()]
表示AAA标签下的最后一个元素
(6)// BBB[@id]
表示所有具有id属性的BBB元素
(7)// BBB[@id=’123′]
表示所有具有id属性,并且等于’123’的元素
 


 
默认情况下,dom4j不支持XPATH操作——需要引入jar包
 
常用对XPATH操作的两个方法:
selectNodes(“xpath表达式”);——>多个结点
selectSingleNode(“xpath表达式”)——>一个结点
 


 
需求1:查询xml中所有name元素的值
关键:selectNodes(“//name”);
 
代码:


public class Test1 {
    public static void main(String[] args) throws DocumentException {
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("source" + File.separator + "person.xml");
        // 得到所有的name元素
        List<Node> list = document.selectNodes("//name");
        // 遍历列表
        for (Node node : list) {
            System.out.println(node.getText());
        }
    }
}

 


 
需求2:获取第一个p1下面的name值
关键:selectNodes(“/person/p1[1]/name”);
 
代码:


public class Test1 {
    public static void main(String[] args) throws DocumentException {
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("source" + File.separator + "person.xml");
        // 得到所有的name元素
        List<Node> list = document.selectNodes("/person/p1[1]/name");
        for (Node node : list) {
            System.out.println(node.getText());
        }
    }
}

 


代码编译器:IntelliJ IDEA 20.01
 
 

您必须 登录 才能发表评论