0. 在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。
基本值(或称原子值,Atomic value)基本值是无父或无子的节点。
1.
表达式 描述
nodename 选取此节点的所有子节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
2. 实例
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang='eng'] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.0] 选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大于 35.0
3. 通配符
* 匹配任何元素节点
@* 匹配任何属性节点
node() 匹配任何类型的节点
4. step
步的语法:
轴名称::节点测试[谓语]
5.轴名称
轴名称 结果
ancestor 选取当前节点的所有先辈(父、祖父等)
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
attribute 选取当前节点的所有属性
child 选取当前节点的所有子元素。
descendant 选取当前节点的所有后代元素(子、孙等)。
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following 选取文档中当前节点的结束标签之后的所有节点。
namespace 选取当前节点的所有命名空间节点
parent 选取当前节点的父节点。
preceding 选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling 选取当前节点之前的所有同级节点。
self 选取当前节点。
6.实例
child::* 选取当前节点的所有子元素
attribute::* 选取当前节点的所有属性
child::text() 选取当前节点的所有文本子节点
child::node() 选取当前节点的所有子节点
7.FLWOR+HTML
<ul>
{
for $x in doc("Untitled3.xml")/bookstore/book/title
where $x/price>30.00
order by $x
return <li>{data($x)}</li>
}
</ul>
8. 请注意 "If-Then-Else" 的语法:if 表达式后的圆括号是必需的。else 也是必需的,不过仅仅写 “else ()” 也是可以的。
9.在 XQuery 中,有两种方法来比较值。
通用比较:=, !=, <, <=, >, >=
值的比较:eq、ne、lt、le、gt、ge
$bookstore//book/@q > 10如果 q 属性的值大于 10,上面的表达式的返回值为 true。
$bookstore//book/@q gt 10如果仅返回一个 q,且它的值大于 10,那么表达式返回 true。如果不止一个 q 被返回,则会发生错误。
10. for 语句
for $x in (1 to 5)
return <test>{$x}</test>
结果:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>
关键词 at 可用于计算迭代:
for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>
结果:
<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>
在 for 语句(order by也一样)中同样允许多个 in 表达式。请使用逗号来分割每一个 in 表达式:
for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>
结果:
<test>x=10 and y=100</test>
<test>x=10 and y=200</test>
<test>x=20 and y=100</test>
<test>x=20 and y=200</test>
11. let语句
let 语句可完成变量分配,并可避免多次重复相同的表达式。let 语句不会导致迭代。
let $x := (1 to 5)
return <test>{$x}</test>结果:
<test>1 2 3 4 5</test>
分享到:
相关推荐
1. 更换默认的xpath库 除了ie,其他主要浏览器都是内置对xpath的支持的,但ie不行,所以selenium 使用了javascript库,默认使用的是ajaxslt,这个会比较慢,可以换成 javascript-xpath, 虽然比firefox还是慢...
官方离线安装包,亲测可用
wicked-good-xpath, 纯JS实现DOM级别 3 XPath规范 很好的XPath Wicked XPath是谷歌编写的DOM级别 3 XPath规范的纯JavaScript实现。 它为每个浏览器中的HTML文档启用XPath评估。 我们相信它是JavaScript中最快的XPath...
离线安装包,亲测可用
标题中的“google-xpath提取器插件”是指一个专门用于网页元素XPath路径提取的工具,它可以帮助用户方便地从Google浏览器中获取XML Path Language(XPath)表达式。XPath是一种在XML文档中查找信息的语言,常用于...
4. **复杂定位**:了解如何处理嵌套元素、动态生成的元素以及使用通配符选择多个元素。 5. **优化与性能**:对比XPath和Css在性能上的差异,学习如何优化选择器以提高测试执行速度。 6. **实战应用**:通过实际项目...
24期爬虫-03-xpath数据解析-邓苏杭-歌曲排名.py
24期爬虫-03-xpath数据解析1-陈麟.py
-包括20多种XPath模式的构建选择器-基于父子轴的动态XPath-允许您将所选的XPath复制到IDE-提供驱动程序命令和POM(基于输入的页面对象模型摘要)XPath,如下所示:1 。id 2.链接文本3.部分链接文本4.基于属性的XPath...
**PyPI 官网下载 | py_dom_xpath_six-0.2.4-py3-none-any.whl** PyPI(Python Package Index)是Python开发者最重要的资源库,它提供了大量开源的Python软件包,使得开发者可以方便地下载和安装这些包,以增强其...
uiautomatorviewer 的增强版,能定位控件 xpath 路径,便于后续项目使用 用法: 将压缩包中的 jar 包替换掉原 uiautomatorviewer 的 jar 包,原 jar 包一般在 sdk\tools\lib 中,注意:jar 包名称需更改为原 jar 包...
在"JSTL-XML-Xpath"这个主题中,我们可以看到JSTL是如何集成XML处理和XPath查询的。JSTL的`<c:import>`和`<x:parse>`标签用于导入XML文档并将其解析为JDOM或DOM对象。接着,`<x:path>`标签可以用来执行XPath表达式,...
《XML》实验任务书 【3】 XPath & XSLT [实验目的] 1、学习如何使用XMLSPY集成开发环境执行XPath查询、以及XSLT的数据转换。 2、理解XPath的类型系统和序列类型等相关概念,掌握XPath表达式... xslt、xmpQ4. xslt。
xpath-XPath 1.0表达式的实现。 也有一些分散的实用程序可在命令行中播放。 将来,我希望增加对XSLT 1.0的支持。 目标这个项目有一个崇高的目标:替换libxml和libxslt。 为它贡献力量...
"css-xpath-converter"就是一个这样的在线工具,它允许用户方便地将CSS选择器转换为XPath表达式,反之亦然。 1. **CSS选择器**: - CSS选择器是CSS中的语法结构,用于匹配HTML或XML文档中的元素。例如,`#id`选择...
js-xpath 使用Jison解析器/生成器JavaScript的XPath解析器/生成器。 演示版 有关解析xpath表达式的非常简单的用法,请参见文件。 用法 首先在文档中包含库以及xpath.js和models.js文件。 然后尝试以下操作以开始...
`json-xpath-master`压缩包可能包含了`json-xpath`库的源代码,包括实现、测试案例以及相关的文档。通过查看这些源代码,开发者可以深入理解其工作原理,甚至可以根据需要对其进行定制或扩展。 总之,`json-xpath`...
将XPath命令添加到测试运行程序 用npm安装 npm install -D cypress-xpath 用纱安装 yarn add cypress-xpath --dev 然后将其包含在您项目的cypress/support/index.js require ( 'cypress-xpath' ) 使用 安装后,您的...
4. **爬取壁纸**:最后,可以利用获取到的图片URL下载壁纸,完成爬虫的目标。 对于这个Bing每日壁纸的案例,可能的步骤包括: 1. 使用XPath Helper找到图片元素的XPath,例如:`//img[@class='some-class']`。 2. ...