xpath - 如何检查节点是否在表单标签内?

标签 xpath

使用 XPath,如何确定节点是否在表单标记内?我想我正在尝试找到其祖先/前一个的表单标签(但我无法让它工作)。

示例1:

<form id="doNotKnowIDofForm">
<div id="level1">
    <span id="mySpan">someText</span>
</div>
</form>

示例2:

<form id="doNotKnowIDofForm">
   This is a closed form.
</form>
<div id="level1">
    <span id="mySpan">someText</span>
</div>
</form>

我可以使用 xpath "//span[id='mySpan']" 来定位 span 节点。但我想知道 mySpan 是否在表单内(我不知道表单的 id)。我尝试过 "//span[id='mySpan']/preceding::form/""//span[id='mySpan']/ancestor::form/"

提前致谢。

编辑:我希望 XPath 在示例 1 中选择 myForm 表单标记,但在示例 2 中

最佳答案

根据您的描述,我不能 100% 确定您是要选择 form 元素还是 span 元素。您似乎更有可能选择表单,因此我将首先解决这个问题。

如果最后没有斜杠,带有 ancestor::form 的 XPath 就可以了,但它比需要的更加迂回。我认为这是一个更好的方法:

//form[.//span/@id = 'mySpan']

或者这个:

//form[descendant::span/@id = 'mySpan']

要生成仅在表单内定位某些节点的 XPath,您可以将 ancestor::form 放在谓词内:

//span[@id = 'mySpan' and ancestor::form]

或者你可以这样做,这又会更直接:

//form//span[@id = 'mySpan']

关于xpath - 如何检查节点是否在表单标签内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14427846/

相关文章:

c# - 通过使用 xpath 在 c# 中过滤现有文档来创建新的 XMLDocument

xml - 带有片段和src的Xpath-如何从“片段/src”后面获取信息?

xml - XPATH:选择节点后的文本

sql - 将列表汇总为逗号分隔的字符串

xpath - xpath多个范围:从多个树中选择数据

python - 带有 Scrapy 节点的 XPath 开头为\n

Python selenium webdriver - 无法一次通过 xpath 单击元素

python - 使用 scrapy 将格式松散的原始 html 消化为文本 block

javascript - 如何找到使用 Javascript 工具提示定义的 Web 元素的 Xpath?

select - 使用 XPATH,如何在保留路径的同时选择多个元素