首页
学习
活动
专区
圈层
工具
发布

XPath定位深入学习(二)

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

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

     XPath轴(XPath Axes)可定义某个相对于当前节点的节点集:

     1、child  选取当前节点的所有子元素

     2、parent  选取当前节点的父节点

     3、descendant 选取当前节点的所有后代元素(子、孙等)

     4、ancestor  选取当前节点的所有先辈(父、祖父等)

     5、descendant-or-self  选取当前节点的所有后代元素(子、孙等)以及当前节点本身

     6、ancestor-or-self  选取当前节点的所有先辈(父、祖父等)以及当前节点本身

     7、preceding-sibling 选取当前节点之前的所有同级节点

     8、following-sibling 选取当前节点之后的所有同级节点

     9、preceding   选取文档中当前节点的开始标签之前的所有节点

     10、following   选取文档中当前节点的结束标签之后的所有节点

     11、self  选取当前节点

     12、attribute  选取当前节点的所有属性

     13、namespace 选取当前节点的所有命名空间节点

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

一.descendant

     descendant选取当前节点的所有后代元素(包括子节点、子孙节点…),descendant (后代)轴包含上下文节点的后代,一个后代是指子节点或者子节点的子节点等等。

     /descendant::*   选择文档根元素的所有后代.即所有的元素被选择

(加粗代表被选中)

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

    /AAA/BBB/descendant::*   选择/AAA/BBB的所有后代元素

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

    //CCC/descendant::*   选择所有CCC元素的所有后代元素

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

    //CCC/descendant::DDD  择所有以CCC为祖先元素的DDD元素

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

二.ancestor

ancestor轴(axis)包含上下节点的祖先节点, 该祖先节点由其上下文节点的父节点以及父节点的父节点等等诸如此类的节点构成,所以ancestor轴总是包含有根节点,除非上下文节点就是根节点本身.

     /AAA/BBB/DDD/CCC/EEE/ancestor::*   选择一个绝对路径上的所有节点

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

   //FFF/ancestor::*    选择FFF元素的所有祖先节点

  <AAA>

     <BBB>

          <DDD>

               <CCC>

                    <DDD/>

                    <EEE/>

               </CCC>

          </DDD>

     </BBB>

     <CCC>

          <DDD>

               <EEE>

                    <DDD>

                         <FFF/>

                    </DDD>

               </EEE>

          </DDD>

     </CCC>

  </AAA>

下一篇
举报
领券