• 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】

  • 相关阅读:
    GoLang之网络
    GoLang之方法与接口
    GoLang之基础
    Twemproxy 缓存代理服务器
    判断点是否在三角形内
    C++中const 的各种用法
    解决java web中safari浏览器下载后文件中文乱码问题
    Spring MVC如何测试Controller(使用springmvc mock测试)
    java生成指定范围的随机数
    itextpdf添加非自带字体(例如微软雅黑)
  • 原文地址:https://www.cnblogs.com/HigginCui/p/5897940.html
Copyright © 2020-2023  润新知