您的位置:首页 > 其它

XPath

2015-11-18 16:44 253 查看
  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孙节点

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: