Xpath-запрос для поиска узлов, чьи потомки содержат определенный текст

Давно прятался здесь, но мне нужно было спросить об этом. Пожалуйста, извините меня за noobity.

Выполнение некоторого PHP / Xpath-кодирования для некоторой очистки, и я хочу знать выражение XPath для выбора узлов, у которых есть родительский элемент, чей брат, где-то в их дереве-потомке, содержит узел с определенным текстовым значением.

Скажем, узел — это что-то вроде span [@ ng = «league»], а текстовое значение где-то в потомке — «SKT», я считаю, что оно должно каким-то образом включать
содержит (text (), ‘SKT’), но я не совсем уверен в остальном. ТИА.

Редактировать:

Я попытался создать диаграмму ситуации здесь

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

0

Решение

Если ваш 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")]]
1

Другие решения

Следующий XPath вернется span[@ng="league"] элементы, где есть хотя бы один текстовый узел в любом месте span которые содержат подстроку ‘SKT’:

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

Если это не работает, то вам нужно быть более конкретным, то есть опубликовать минимальный пример HTML / XML (форматированный текст, а не изображение), где приведенная выше XPath не возвращает желаемый результат

0

По вопросам рекламы [email protected]