zoukankan      html  css  js  c++  java
  • XPath 元素及属性查找

    实例 1

    基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径

    /AAA
    选择根元素AAA

          <AAA>
               <BBB/>
               <CCC/>
               <BBB/>
               <BBB/>
               <DDD>
                    <BBB/>
               </DDD>
               <CCC/>
          </AAA>
    /AAA/CCC
    选择AAA的所有CCC子元素

          <AAA>
               <BBB/>
               <CCC/>
               <BBB/>
               <BBB/>
               <DDD>
                    <BBB/>
               </DDD>
               <CCC/>
          </AAA>
    /AAA/DDD/BBB
    选择AAA的子元素DDD的所有子元素

          <AAA>
               <BBB/>
               <CCC/>
               <BBB/>
               <BBB/>
               <DDD>
                    <BBB/>
               </DDD>
               <CCC/>
          </AAA>

    实例 2

    如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)

    //BBB
    选择所有BBB元素

          <AAA>
               <BBB/>
               <CCC/>
               <BBB/>
               <DDD>
                    <BBB/>
               </DDD>
               <CCC>
                    <DDD>
                         <BBB/>
                         <BBB/>
                    </DDD>
               </CCC>
          </AAA>
    //DDD/BBB
    选择所有父元素是DDD的BBB元素

          <AAA>
               <BBB/>
               <CCC/>
               <BBB/>
               <DDD>
                    <BBB/>
               </DDD>
               <CCC>
                    <DDD>
                         <BBB/>
                         <BBB/>
                    </DDD>
               </CCC>
          </AAA>

    实例 3

    星号 * 表示选择所有由星号之前的路径所定位的元素

    选择所有路径依附于/AAA/CCC/DDD的元素

          <AAA>
               <XXX>
                    <DDD>
                         <BBB/>
                         <BBB/>
                         <EEE/>
                         <FFF/>
                    </DDD>
               </XXX>
               <CCC>
                    <DDD>
                         <BBB/>
                         <BBB/>
                         <EEE/>
                         <FFF/>
                    </DDD>
               </CCC>
               <CCC>
                    <BBB>
                         <BBB>
                              <BBB/>
                         </BBB>
                    </BBB>
               </CCC>
          </AAA>
    */BBB
    选择所有的有3个祖先元素的BBB元素

          <AAA>
               <XXX>
                    <DDD>
                         <BBB/>
                         <BBB/>
                         <EEE/>
                         <FFF/>
                    </DDD>
               </XXX>
               <CCC>
                    <DDD>
                         <BBB/>
                         <BBB/>
                         <EEE/>
                         <FFF/>
                    </DDD>
               </CCC>
               <CCC>
                    <BBB>
                         <BBB>
                              <BBB/>
                         </BBB>
                    </BBB>
               </CCC>
          </AAA>
    //*
    选择所有元素

          <AAA>
               <XXX>
                    <DDD>
                         <BBB/>
                         <BBB/>
                         <EEE/>
                         <FFF/>
                    </DDD>
               </XXX>
               <CCC>
                    <DDD>
                         <BBB/>
                         <BBB/>
                         <EEE/>
                         <FFF/>
                    </DDD>
               </CCC>
               <CCC>
                    <BBB>
                         <BBB>
                              <BBB/>
                         </BBB>
                    </BBB>
               </CCC>
          </AAA>

    实例 4

    方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.

    /AAA/BBB[1]
    选择AAA的第一个BBB子元素

          <AAA>
               <BBB/>
               <BBB/>
               <BBB/>
               <BBB/>
          </AAA>
    /AAA/BBB[last()]
    选择AAA的最后一个BBB子元素

          <AAA>
               <BBB/>
               <BBB/>
               <BBB/>
               <BBB/>
          </AAA>

    实例 5

    属性通过前缀 @ 来指定

    //@id
    选择所有的id属性

          <AAA>
               <BBB id = "b1"/>
               <BBB id = "b2"/>
               <BBB name = "bbb"/>
               <BBB/>
          </AAA>
    //BBB[@id]
    选择有id属性的BBB元素

          <AAA>
               <BBB id = "b1"/>
               <BBB id = "b2"/>
               <BBB name = "bbb"/>
               <BBB/>
          </AAA>
    //BBB[@name]
    选择有name属性的BBB元素

          <AAA>
               <BBB id = "b1"/>
               <BBB id = "b2"/>
               <BBB name = "bbb"/>
               <BBB/>
          </AAA>
    //BBB[@*]
    选择有任意属性的BBB元素

          <AAA>
               <BBB id = "b1"/>
               <BBB id = "b2"/>
               <BBB name = "bbb"/>
               <BBB/>
          </AAA>
    //BBB[not(@*)]
    选择没有属性的BBB元素

          <AAA>
               <BBB id = "b1"/>
               <BBB id = "b2"/>
               <BBB name = "bbb"/>
               <BBB/>
          </AAA>

    实例 6

    属性的值可以被用来作为选择的准则, normalize-space函数删除了前部和尾部的空格, 并且把连续的空格串替换为一个单一的空格
    //BBB[@id='b1']
    选择含有属性id且其值为'b1'的BBB元素

          <AAA>
               <BBB id = "b1"/>
               <BBB name = " bbb "/>
               <BBB name = "bbb"/>
          </AAA>
    //BBB[@name='bbb']
    选择含有属性name且其值为'bbb'的BBB元素

          <AAA>
               <BBB id = "b1"/>
               <BBB name = " bbb "/>
               <BBB name = "bbb"/>
          </AAA>
    //BBB[normalize-space(@name)='bbb']
    选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为'bbb'的BBB元素

          <AAA>
               <BBB id = "b1"/>
               <BBB name = " bbb "/>
               <BBB name = "bbb"/>
          </AAA>
  • 相关阅读:
    加入创业公司有什么利弊
    Find Minimum in Rotated Sorted Array II
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Find Minimum in Rotated Sorted Array
    Remove Duplicates from Sorted Array
    Spiral Matrix
    Spiral Matrix II
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/odoo/p/4386694.html
Copyright © 2011-2022 走看看