`

XPath集合——XPath语法详解系列(三)

    博客分类:
  • XML
阅读更多
  • XPath 集合

XPath 查询返回的集合在定义的范围内保留文档顺序 、层次结构和标识。也就是说,按照文档顺序返回元素集合,没有重复的元素 。因为根据定义,属性不排序 ,所以,为特定元素返回的属性不进行明确地排序。

 

具有特定标记名的所有元素的集合使用标记名本身表示。限定方法可以通过使用句点和正斜杠 (./ ) 表明元素是从当前上下文中选择,但是默认情况下将使用当前上下文,不必明确说明

表达式 引用

./first-name

所有 <first-name> 元素。注意,此表达式等效于后面的表达式。

first-name

所有 <first-name> 元素。

为集合编制索引

使用 XPath 表达式可以很容易在节点集中查询特定的节点。只需为索引序号加上方括号。序号从 1 开始(第一个元素是编号 1)。

方括号字符 ([] ) 的优先级高于斜杠字符(/// )。有关更多信息,请参见运算符和特殊字符 。

示例:

表达式 引用

author[1]

第一个 <author> 元素。

author[first-name][3]

具有 <first-name> 子元素的第三个 <author> 元素。

注意,索引相对于筛选的节点集。下表显示如何选择特定的 <x><y> 元素: 

x/y[2]

每个 <x> 中的第二个 <y> ,可选择多个。

(x/y)[2]

<x> <y> 组成的整个集合元素集的第三个 <y> ,有且仅有一个。

x[2]/y[2]

第二个 <x> 中的第二个 <y> ,也有且仅有一个。

<x>

  <y/>

  <y/>

</x>

<x>

  <y/>

  <y/>

</x>

<x>

  <y/>

  <y/>

</x>

<x>

  <y/>

  <y/>

</x>

<x>

  <y/>

  <y/>

</x>

<x>

  <y/>

  <y/>

</x>

 

上面的示例简单地引用使用暗示默认值(例如 child:: 轴)的 XPath 集合。对于此轴,子节点集合按照前向文档顺序编制索引。

对于其他轴(例如 ancestor:: ),在 XPath 表达式中需明确使用轴名。对于此轴,上级集合按照后向文档顺序编制索引。从上表中考虑此示例:

x/y[1]

此表达式等效于以下表达式:

x/child::y[1]

两个表达式均意味着“对每个 <x> 元素选择第一个名为 <y> 的子元素”。

下面的示例使用了相同的语法。

x/y/ancestor::x[1]

此示例意味着“对每个 <y> 元素选择第一个名为 <x> 的祖先元素(按照后向文档顺序)”。语法相同但是顺序相反。

查找集合中的最后一个元素

last() 函数对集合中的最后一个元素返回 True。注意,last 相对于父节点。

示例:

表达式 引用

book[last()]

最后一个 <book> 元素。

book/author[last()]

每个 <book> 元素中的最后一个 <author> 元素。

(book/author)[last()]

<book> 元素中整个 <author> 元素集的最后一个 <author> 元素。

分组

为了清楚起见,或正常的优先级不足以表达某个运算,可以使用括号为集合运算符分组。分组运 算符可以在任何筛选表达式(谓词)中使用,例如 author[(degree or award)and publication] 。也可以在顶级步长表达式中使用,例如 (book|magazine)(author/degree | book/award) 。不能应用于低级步长表达式。例如,author/(degree | award) 无效。但另外 (book | magazine)/price是可以的,因为分组括号用在了第一级步长。

示例:

表达式 引用

(book/author)

属于当前上下文节点中任何 <book> 元素的子元素的所有 <author> 元素。

author[(degree or award) and publication]

至少包含一个 <degree><award> 元素以及至少包含一个 <publication> 元素的所有 <author> 元素。

分享到:
评论

相关推荐

    xpath语法详解

    xpath语法

    Python3 xml.etree.ElementTree支持的XPath语法详解

    主要介绍了Python3 xml.etree.ElementTree支持的XPath语法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    XPath语法详解xml开发必备

    对XPath语法进行了详细的讲解。XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它也是使用xslt的基础知识。开发人员必备

    XPath基础用法详解

    xpath简介、教程、Axes、节点、实例、语法、运算符

    Python的Xpath介绍和语法详解

    2.语法详解 #1.选取节点 ''' / 如果是在最前面,代表从根节点选取,否则选择某节点下的某个节点.只查询子一辈的节点 /html 查询到一个结果 /div 查询到0个结果,因为根节点以下只有一个html子节点 /...

    【爬虫学得好,基础少不了】:XPath语法和lxml模块(详解)

    二、xpath helper插件三、xpath helper安装使用方法四、XPath语法4.1 节点语法4.2 节点实例4.3 谓语(Predicates)4.4 选取未知节点4.5 选取若干路径五、XPath 轴5.1 轴常用语法5.2 位置路径表达式5.3 步(step)的...

    Python爬虫基础之XPath语法与lxml库的用法详解

    主要给大家介绍了关于Python爬虫基础之XPath语法与lxml库用法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    解析XPath语法之在C#中使用XPath的示例详解

    本篇文章是对在C#中使用XPath的示例进行了详细的分析介绍,需要的朋友参考下

    PHP使用xpath解析XML的方法详解

    主要介绍了PHP使用xpath解析XML的方法,结合实例形式详细分析了Xpath语法以及通过Xpath解析xml文档的操作步骤与相关实现技巧,需要的朋友可以参考下

    DOM XPATH获取img src值的query

    您可能感兴趣的文章:c#通过xpath读取xml示例java使用xpath解析xml示例分享java使用xpath和dom4j解析xml深入XPath的详解以及Java示例代码分析解析XPath语法之在C#中使用XPath的示例详解使用HtmlAgilityPack XPath ...

    python3 xpath和requests应用详解

    etree使用xpath语法。 import requests import ssl from lxml import etree ssl._create_default_https_context = ssl._create_unverified_context session = requests.Session() for id in range(0, 251, 25): ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    全书一共被压缩为5个rar,这是第三个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    12.8.2 jsp文档中的元素语法 404 12.9 小结 407 第13章 jsp与javabean 409 13.1 javabean简介 409 13.1.1 属性的命名 409 13.1.2 属性的类型 411 13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 ...

    Python爬虫JSON及JSONPath运行原理详解

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写...JsonPath与XPath语法对比: Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。 相关推

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    12.8.2 jsp文档中的元素语法 404 12.9 小结 407 第13章 jsp与javabean 409 13.1 javabean简介 409 13.1.1 属性的命名 409 13.1.2 属性的类型 411 13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 ...

    asp.net知识库

    XPath 简单语法 Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    12.8.2 jsp文档中的元素语法 404 12.9 小结 407 第13章 jsp与javabean 409 13.1 javabean简介 409 13.1.1 属性的命名 409 13.1.2 属性的类型 411 13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 ...

Global site tag (gtag.js) - Google Analytics