• XPath 读书笔记


    <?xml version="1.0" encoding="ISO-8859-1"?>
    <books>
    <book type=”hardback”>
    <title>Atlas Shrugged</title>
    <author>Ayn Rand</author>
    <isbn>0525934189</isbn>
    </book>
    <book type=”paperback”>
    <title>A Burnt-Out Case</title>
    <author>Graham Greene</author>
    <isbn>0140185399</isbn>
    </book>
    </books>

    每个结点可以是以下七个类型之一:根(root)、元素(element)、属性(attribute)、正文(text)、命名空间(namespace)、处理指令(processing instruction)和注释(comment)


    所有的book元素://books/book
    双正斜杠(//)表示返回XML文档中的所有符合查找准则的元素,而忽略文档中元素的位置级别。


    所有的ISBN元素:/books/book/isbn
    返回如下的元素:
    <books>
    <book type=”hardback”>
    <isbn>0525934189</isbn>
    </book>
    <book type=”paperback”>
    <isbn>0140185399</isbn>
    </book>
    </books>


    所有标题为Atlas Shrugged的book元素:/books/book[title=”Atlas Shrugged”]


    /books/book[author]
    方括号符号让你使用属性作为查找准则


    所有type属性值为hardback的书://book[@type=”hardback”]
    返回下面的元素:
    <book type=”hardback”>
    <title>Atlas Shrugged</title>
    <author>Ayn Rand</author>
    <isbn>0525934189</isbn>
    </book>


    方括号符号在XPath文档中称为谓词,方括号的另外一个用途是标识需要检索的项数。
    返回第一个book元素:/books/book[1]
    <book type=”hardback”>
    <title>Atlas Shrugged</title>
    <author>Ayn Rand</author>
    <isbn>0525934189</isbn>
    </book>


    用通配符(*)可以很容易的检索到在根结点下的所有元素。

    所有的book元素:/books/*


    所有属性type值为hardcover或softcover的book元素://books/book[@type=”hardcover”] | //books/book[@type=”softcover”]
    符号(|)与逻辑OR操作符相同。


    语句的第一个字符决定参考点,以正斜杠(/)开始的语句被看作查询时将使用绝对路径。


    使用相对路径的例子:
    在当前的参考点下开始查找
    book/*


    单个圆点表示选择当前结点,双圆点表示选择父结点。


    当前结点的父结点的所有子结点:
    ../*

    ==============================================================================================================
    <A id="a1">
      <B id="b1">
        <C id="c1">
          <B name="b"/>
          <D id="d1"/>
          <E id="e1"/>
          <E id="e2"/>
        </C>
      </B>
      <B id="b2"/>
      <C id="c2">
        <B/>
        <D id="d2"/>
        <F/>
      </C>
      <E/>
    </A>

    /A/B/C[1] A元素→B元素→C元素的第一个子元素 name值为b的B元素

    /A/B/C[last()] A元素→B元素→C元素的最后一个子元素 id值为e2的E元素

    /A/B/C[position()>1] A元素→B元素→C元素之下的位置号大于1的元素 id值为d1的D元素和两个具有id值的E元素

    //B[@id] 所有具有属性id的B元素  id值为b1和b2的两个B元素
    //B[@*]  所有具有属性的B元素  两个具有id属性的B元素和一个具有name属性B元素
    //B[not(@*)] 所有不具有属性的B元素  A元素→C元素下的B元素
    //B[@id="b1"] id值为b1的B元素   A元素下的B元素


    //E/parent::*  所有E节点的父节点元素  id值为a1的A元素和id值为c1的C元素

    //F/ancestor::*  所有F元素的祖先节点元素  id值为a1的A元素和id值为c2的C元素

    /A/child::*  A的子元素  id值为b1、b2的B元素,id值为c2的C元素,以及没有任何属性的E元素

    /A/descendant::* A的所有后代元素  除A元素以外的所有其它元素

    //F/self::*  所有F的自身元素  F元素本身

    //F/ancestor-or-self::*  所有F元素及它的祖先节点元素  F元素、F元素的父节点C元素和A元素

    /A/C/descendant-or-self::* 所有A元素→C元素及它们的后代元素 id值为c2的C元素、该元素的子元素B、D、F元素

    /A/C/following-sibling::* A元素→C元素的紧邻的后序所有兄弟节点元素 没有任何属性的E元素

    /A/C/preceding-sibling::* A元素→C元素的紧邻的前面所有兄弟节点元素 id值为b1和b2的两个B元素

    /A/B/C/following::*  A元素→B元素→C元素的后序的所有元素  id为b2的B元素、无属性的C元素、无属性的B元素、id为d2的D元素、无属性的F元素、无属性的E元素。

    /A/C/preceding::*  A元素→C元素的前面的所有元素   id为b2的B元素、id为e2的E元素、id为e1的E元素、id为d1的D元素、name为b的B元素、id为c1的C元素、id为b1的B元素

  • 相关阅读:
    后端——框架——容器框架——spring_core——《官网》阅读笔记——第三章节2(转换器)
    后端——框架——容器框架——spring_core——《官网》阅读笔记——第三章节3(格式化器)
    后端——框架——容器框架——spring_core——《官网》阅读笔记——第四章节(Spring EL表达式)
    后端——框架——容器框架——spring_core——《官网》阅读笔记——第六章节3(AOP)——待补充
    spring boot中线程池的基本使用
    面试题
    activemq的基本使用
    mysql的索引基础--------创建,优化,失效
    spring cloud中各个组件设置超时的详细解释
    spring cloud中Hystrix组件的基本使用
  • 原文地址:https://www.cnblogs.com/RobotTech/p/552242.html
Copyright © 2020-2023  润新知