我有一个 HTML 结构,我正尝试使用 XPATH 对其进行测试。我目前要查看的结构类似于:
<div id="item_1" class="item-wrapper">
<div class="container item">
<div class="container-header">
<h2 id="title">test-title</h2>
<h5 id="description">test-description</h5>
</div>
</div>
</div>
我的文档中有许多“项目”,每个项目都有一个唯一的 ID。使用 XPATH,我想从 title
id 节点(在本例中为“test-title”)的值中“获取”item_1 节点。
我也想以不依赖于节点标记(div
/h2
/etc)的方式来执行此操作。
我一直在研究谓词,但似乎无法找到有效的解决方案。例如:
//*[@class="item-wrapper"][./*[@id="title"][text()="test-title"]]
感谢您的帮助!
最佳答案
您可以使用以下 XPATH:
//*[@id="title"]/ancestor::*[@id="item_1"][1]
或者,您也可以使用函数 Function: node-set id(object)
id('title')//ancestor::*[@id="item_1"][1]
更新
//*[.="test-title"]/ancestor::*[@class="item-wrapper"][1]
输出
<div id="item_1" class="item-wrapper">
<div class="container item">
<div class="container-header">
<h2 id="title">test-title</h2>
<h5 id="description">test-description</h5>
</div>
</div>
</div>
关于xml - 从 XPATH 后代值获取父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19119093/