Давно прятался здесь, но мне нужно было спросить об этом. Пожалуйста, извините меня за 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**
Если ваш 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")]]
Следующий XPath вернется span[@ng="league"]
элементы, где есть хотя бы один текстовый узел в любом месте span
которые содержат подстроку ‘SKT’:
//span[@ng="league" and .//text()[contains(., 'SKT')]]
Если это не работает, то вам нужно быть более конкретным, то есть опубликовать минимальный пример HTML / XML (форматированный текст, а не изображение), где приведенная выше XPath не возвращает желаемый результат