为一些抓取进行一些 PHP/Xpath 编码,我想知道一个 XPath 表达式来选择具有父级的节点,其父级的兄弟节点(在其后代树中的某个位置)包含具有特定文本值的节点。
假设节点类似于 span[@ng="league"] 并且后代中某处的文本值是“SKT”,我相信它应该以某种方式包括 contains(text(), 'SKT'),但我不太确定其余的。短暂性脑缺血发作。
|
+[parent]
| |
| [the node I want]
|
+[sibling of "parent" node seen above]
| |
| *
| |
| +---[specific text, found with previous xpath query]
|
etc
以下 XPath 将返回
span[@ng="league"]
元素,其中 span
中的任意位置至少有一个包含子字符串“SKT”的文本节点:
//span[@ng="league" and .//text()[contains(., 'SKT')]]
如果这不起作用,那么您需要更具体,即发布最小的 HTML/XML 示例(格式化文本,而不是图像),其中上面的 XPath 不会返回所需的输出
如果你的 xml 是这样的
<parent>
<span ng="league">The node you want </span>
</parent>
<any>
<any2>
<any3>SKT</any3>
</any2>
</any>
你可以使用这样的xpath
//span[@ng="league"][../following-sibling::*[contains(., "SKT")]]