07_XPath_02_常用语法

时间:2022-07-22 17:40:37

【工程截图】

07_XPath_02_常用语法

【person.xml】

<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="88888" phone="15888888888" sex="男">
<name>张三</name>
<name>张三2</name>
<age>18</age>
<school>清华</school>
</student>
<student id="99999" phone="15999999999" sex="女">
<name>李四</name>
<name>李四2</name>
<age>28</age>
<school>北大</school>
</student>
<student phone="15666666666" sex="男">啦啦啦</student>
<AAAA>
<student id="AAA">AAA哈哈哈</student> <!-- student干扰项 -->
<aa1>aa111</aa1>
<aa2>aa222</aa2>
</AAAA>
<BBBB>
<student id="BBB" sex="女">BBB哈哈哈</student> <!-- student干扰项 -->
</BBBB>
</students>

【共用的打印节点路径和内容的方法】方便查看

public static void printNodes(String xpath,Document doc){
List<Node> list=doc.selectNodes(xpath);
for(Node node:list){
System.out.println("【路径】"+node.getPath()+" 【内容】"+node.getText());
}
}

【1.绝对路径 / 】

public static void main(String[] args) throws DocumentException {
Document doc=new SAXReader().read(new File("./src/person.xml")); String xpath="";

//后面的代码分别代替下面的"===="内的内容
=================================================================
/**
* 1. "/" 绝对路径 表示从xml的根位置开始
*/
xpath="/students"; //打印结果1
xpath="/students/student/name"; //打印结果2
   ==================================================================
     printNodes(xpath,doc); //调用上面打印路径和内容的方法 (分别注释)
}

【打印结果1】

07_XPath_02_常用语法

【打印结果2】

07_XPath_02_常用语法

【2. 相对路径  // 】

        /**
* 2. "//" 相对路径 表是不分任何层次结构的选择元素
*/
xpath="//student/age"; //打印结果1
xpath="//name"; //打印结果2

【打印结果1】

07_XPath_02_常用语法

【打印结果2】

07_XPath_02_常用语法

【3.通配符 *】

        /**
* 3. "*" 通配符 表示匹配所有元素
*/
xpath="/students/*"; //打印结果1
xpath="/students/student/*"; //打印结果2

【打印结果1】

07_XPath_02_常用语法

【打印结果2】

07_XPath_02_常用语法

【4.条件 [ ] 】

        /**
* 4. "[]" 条件 表好似选择什么条件下的元素
*/
//带有id属性的标签
xpath="//student[@id]"; //打印结果1
//第3个student标签
xpath="//student[3]"; //打印结果2
//选择最后一个student标签
xpath="//student[last()]"; //打印结果3

【打印结果1】

07_XPath_02_常用语法

【打印结果2】

07_XPath_02_常用语法

【打印结果3】

07_XPath_02_常用语法

【5.  属性 "@"】

        /**
* 5. "@" 属性 表好似选择属性节点
*/
xpath="//@id"; //打印结果1
xpath="//student[not(@id)]"; //打印结果2
xpath="//student[@id='BBB' and @sex='女']"; //打印结果3

【打印结果1】

07_XPath_02_常用语法

【打印结果2】

07_XPath_02_常用语法

【打印结果3】

07_XPath_02_常用语法

【6. 文本  text()】

        /**
* 6. text() 表示选择文本内容
*/
xpath="//name/text()"; //打印结果1
//选择name为李四的name标签
xpath = "//student/name[text()='李四']";//打印结果2

【打印结果1】

07_XPath_02_常用语法

【打印结果2】

07_XPath_02_常用语法