1

在这里潜伏了很长时间,但我需要问这个。请原谅我的菜鸟。

为一些抓取做一些 PHP/Xpath 编码,我想知道一个 XPath 表达式来选择具有父级的节点,该父级在其后代树的某处包含具有特定文本值的节点。

假设节点类似于 span[@ng="league"] 并且后代中某处的文本值是 'SKT',我相信它应该以某种方式包含 contains(text(), 'SKT'),但我'我不太确定其余的。TIA。

编辑:

我试图在这里创建一个情况图

**
|
|
+[parent]
|    |
|    |
|   [the node I want]
|     
|     
|
|
+[sibling of "parent" node seen above]
|   |
|   *
|   |
|   +---[specific text, found with previous xpath query]
|
etc**
4

2 回答 2

2

以下 XPath 将返回span[@ng="league"]在其中任何位置至少有一个文本节点span包含子字符串 'SKT' 的元素:

//span[@ng="league" and .//text()[contains(., 'SKT')]]

如果这不起作用,那么您需要更具体,即发布最小的 HTML/XML 示例(格式化文本,而不是图像),其中上面的 XPath 不返回所需的输出

于 2018-01-26T06:24:42.257 回答
1

如果您的 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")]]
于 2018-01-26T06:33:10.347 回答