XPath学习:基本语法简要总结

 

     XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。

     XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。

     下面的例子中红色字体表示使用对应语法获取的元素(或属性)。

        1、斜线/从根节点选择 ,基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径,获取满足该路径的所有节点:

      选择根元素   语法:/AAA 

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

     选择AAA的所有CCC子元素  语法:/AAA/CCC

   <AAA > 
     <BBB /> 
     <CCC /> 
     <BBB /> 
     <DDD > 
          <BBB /> 
     </DDD > 
     <CCC > 
          <DDD > 
               <BBB /> 
               <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 >

      选择AAA的CCC的所有BBB元素  语法:/AAA/CCC//BBB

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

     3、点“.” 选取当前节点。

     4、“..”选取当前节点的父节点。

     5、”@”选取属性。

      选择所有的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 >

    选择id属性为“id1”的BBB元素  语法://BBB[@id="b1"]

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

 

谓语在XPath是重要的一部分,谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。

     1、选择AAA下的第一个BBB元素  语法:/AAA/BBB[1]

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

      2、选择AAA下的最后一个BBB元素  语法:/AAA/BBB[last()]

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

     3、选择AAA下的倒数第二个BBB元素  语法:/AAA/BBB[last()-1]

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

      4、选择AAA下的前面两个BBB元素  语法:/AAA/BBB[position()<3]

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

      5、获取AAA下的BBB下的有s属性的CCC元素   语法:/AAA/BBB/CCC[@s]

   <AAA > 
     <BBB > 
          <CCC   s = "1" /> 
          <CCC   s = "2" /> 
          <CCC   s = "3" /> 
          <CCC   s = "4" /> 
          <CCC   s = "5" /> 
          <CCC r = "a" /> 
     </BBB > 
     <CCC > 
          <BBB   r = "a" /> 
          <BBB   r = "b" /> 
          <BBB   r = "c" /> 
     </CCC > 
     <BBB /> 
     <BBB /> 
  </AAA >

     6、选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大于 35.00。 语法:bookstore/book[price>35.00]

   <bookstore > 
     <book>

       <title land="eng">Book1</title>

       <price>29.99</tilte>

     </book>  

     <book >

       <title land="eng">Book2</title>

       <price>39.55</tilte>

     </book >  

   </bookstore >

       7、选取所有 bookstore 元素中的 book 元素的 title 元素,且其中的 price 元素的值须大于 35.00.  语法:/bookstore/book[price>35.00]/title

   <bookstore > 
     <book>

       <title land="eng">Book1</title>

       <price>29.99</tilte>

     </book>  

     <book>

       <title land="eng">Book2</title >

       <price>39.55</tilte>

     </book>  

   </bookstore >

 

 

来自下面链接(有改动和更新)

http://www.cnblogs.com/zhaozhan/archive/2009/09/09/1563617.html

 

 

 

你可能感兴趣的:(xml)