zoukankan      html  css  js  c++  java
  • XPath

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

      XPath使用路径表达式在XML文档中进行导航;XPath包含一个标准函数库;XPath是XSLT中的主要元素;XPath是W3C标准。

      在XPath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。

      节点(Node):XML文档是作为节点树来对待的。树的根被称为文档节点或者根节点。

      <?xml version="1.0" encoding="ISO-8859-1" ?>

      <bookstore>  <!-- 文档节点 -->

        <book>

          <title lang="en'>Harry Potter</title>

          <author>K. Rowling</author>  <!-- 元素节点 -->

          <year>2015</year>

          <price>29.99</price>

        </book>

      </bookstore>

      基本值(原子值):无父或无子的节点

      项目:基本值或节点

      XPath使用路径表达式来获取XML文档中的节点或节点集。节点是通过沿着路径或步来选取的。

      路径表达式:

      nodename    选取次节点的所有子节点

      /                  从根节点选取

      //                 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置

      .          选取当前节点

      ..     选取当前节点的父节点

      @      选取属性

     

      谓语(predicates):用来查找某个特定的节点或包含某个指定的值的节点,谓语被嵌在方括号中。

      /bookstrore/book[1]   选取boostore子元素的第一个book元素

      /bookstore/book[last()]  选取boostrore子元素的最后一个book元素

      /bookstore/book[last()-1]  选取bookstore子元素的倒数第二个book元素

      /bookstroe/book[position()<3]  选取最前面的两个属于bookstore元素的子元素的book元素

      //title[@lang]   选取所有拥有名为lang的属性的title元素

      //title[@lang="eng"]  选取所有title元素,且这些元素拥有eng的lang值

      /bookstore/booke[price>35.00]  选取bookstrore元素所有book元素,且其中的price值须大于35

      /bookestore/book[price>35]/title  选取bookestore元素中的book元素的所有title元素,且中的price值必须大于35

      

      XPath可以使用通配符来选取未知的XML元素

      *  匹配任何元素节点

      @*  匹配任何属性节点

      node()  匹配任何类型节点

      /bookstore/*   选取bookstore元素的所有子元素

      //*  选取文档中的所有元素

      //title[@*]  选取所有属性的title元素

      选取若干路径:通过在路径表达式中使用|运算符,可以选取若干路径

      //book/title|//book/price  选取booke元素所有的title和price元素

      //title|//price  选取文档中的所有title和price元素

      /bookstore/book/title|//price 选取bookstroe元素的book元素中所有的title和price元素

      XPath轴:相对于当前节点的节点集

      ancestor  选取当前节点的所有先辈

      ancestor-or-self  选取当前节点的所有父辈及当前节点本身

      attribue  选取当前节点的所有属性值

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

      descendant  选取当前节点的所有后代元素

      descendant-or-self  选取当前节点的所有后代元素以及当前节点本身

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

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

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

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

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

      self  选取当前节点

      位置路径可以是绝对的,也可以是相对的。绝对路径起始于正斜杠/。

      步(step)包括:

      轴:定义所选节点域当前节点之间的树关系

      节点测试:识别某个轴内部的节点

      另个或多个谓语,更深入的提炼所选的节点集

      chile:book 选取所有属于当前节点的子元素的book节点

      atrribute::lang 选取当前节点的lang属性

      child::*  选取当前节点的所有子元素

      attribute::*  选取当前节点的所有属性

      child::text()  选取当前节点的所有文本子节点

      child::node()  选取当前节点的所有子节点

      descendant::book 选取当前节点的所有book后代

      ancestor::book  选取当前节点的所有book先辈

      ancestor-or-self::book  选取当前节点的所有book先辈及当前节点

      child::*/child::price 选取当前节点的所有price孙节点

      

  • 相关阅读:
    Codeforces Round #581 div.2 A,B,C
    19年牛客多校第十场记录
    tarjan 学习笔记
    POJ 3177 Redundant Paths (tarjan无向图求缩点)
    hdu 4738 Caocao's Bridges (tarjan求桥)
    hdu 1540 Tunnel Warfare (线段树维护一维联通区间)
    遍历 redis 数据库
    非web 的 java程序 打成jar包 在linux上运行
    java-疑问-远程连接linux服务器找不到文件路径
    java-查询图片url导出到本地
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/4975011.html
Copyright © 2011-2022 走看看