基本XPath语法

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

1,选择AAA的所有CCC子元素
/AAA/CCC

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


3,选择所有父元素是DDD的BBB元素

//DDD/BBB

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



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

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

/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>


5,选择所有的有3个祖先元素的BBB元素

/*/*/*/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>

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

选择AAA的第一个BBB子元素

/AAA/BBB[1]

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

选择AAA的最后一个BBB子元素

/AAA/BBB[last()]

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


7,属性通过前缀 @ 来指定

选择所有的id属性

//@id

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

选择有id属性的BBB元素

//BBB[@id]

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


选择有name属性的BBB元素
//BBB[@name]

     <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元素

//BBB[not(@*)]

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



摘自:

http://www.zvon.org/xxl/XPathTutorial/Output/example1.html

猜你喜欢

转载自blog.csdn.net/julius_lee/article/details/71085584
今日推荐