.在XPath中代表当前上下文节点,用于基于当前位置进行相对路径导航,可明确指向当前元素以实现精准定位,常用于相对路径、谓语条件判断、函数参数中,如./span表示当前节点下的span子元素,//div[./@id='main']表示id属性为main的div,string(.)返回当前节点文本,..表示父节点可用于向上导航,.与轴和函数结合可提升表达式可读性与精确度,是XPath中基础且关键的语法符号。
是的,XPath中的
.
在我看来,
.
.
具体来说,当你在编写XPath表达式时,如果没有明确指定一个起始点,那么默认的上下文就是整个文档的根节点。但很多时候,我们希望在某个特定的元素内部进行查找,或者对某个元素本身进行条件判断。这时候,
.
比如,你可能有一个
<div>
<span>
<div>
<span>
div/span
<div>
./span
div
更常见的,
.
[]
.
//div[./p]
p
div
.
div
.
//div[p]
.
它还能用于获取当前节点的文本内容,比如
string(.)
contains(., '关键词')
.
在XPath的导航体系里,
.
..
.
..
.
<book>
<title>
./title
//div[./@id='main']
id
main
div
//div[@id='main']
.
而
..
<author>
<author>
<book>
../..
author
book/details/author
ancestor::book
..
//span[@class='price']/..
span
<div>
<li>
在我实际工作中,我发现
..
//button[text()='提交']/../@id
id
.
[]
一个常见的场景是,你需要找到一个元素,它必须满足自身的一些条件,同时它的某个子元素也必须满足另一些条件。比如,我想找到所有
<div>
<div>
class
product
<span>
<span>
传统的写法可能是:
//div[@class='product' and span[text()='库存充足']]
span[text()='库存充足']
span
div
.
//div[./@class='product' and ./span[text()='库存充足']]
./
再举一个例子,假设你有一个列表,每个列表项
<li>
<img>
<p>
src
你可以这样写:
//li[./p[contains(., '特价')] and ./img[not(@src='')]]
.
contains(., '特价')
p
.
./p[...]
li
.
./img[...]
li
通过
.
li
p
img
.
将
.
parent::
ancestor::
preceding-sibling::
following-sibling::
count()
string()
name()
position()
.
一个常见的实践是,当你定位到一个元素后,需要基于这个元素去查找其兄弟节点或者祖先节点,并且这些兄弟或祖先节点还需要满足特定的条件。
例如,你找到了一个特定的错误消息
<span>
<input>
你可以尝试:
//span[text()='输入错误']/preceding-sibling::input[1]
preceding-sibling::input[1]
span
.
input
或者,如果你想找到某个
<div>
<a>
<a>
href
//div[@id='content']//a[./@href]
.
a
./@href
@href
a
href
在函数中使用
.
<li>
count(./li)
div
name(.) = 'div'
我个人在使用时,倾向于在谓语中显式使用
.
//div[./@class='card' and ./p[contains(string(.), '详情')]]
string(.)
p
.
以上就是XPath的.语法代表当前节点吗?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号