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】

【打印结果2】

 

【2. 相对路径  // 】

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

【打印结果1】

【打印结果2】

 

 【3.通配符 *】

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

【打印结果1】

【打印结果2】

 

【4.条件 [ ] 】

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

【打印结果1】

【打印结果2】

 

【打印结果3】

 

 

【5.  属性 "@"】

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

【打印结果1】

【打印结果2】

【打印结果3】

 

 【6. 文本  text()】

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

【打印结果1】

【打印结果2】

 

posted @ 2016-09-22 21:07  HigginCui  阅读(329)  评论(0编辑  收藏  举报