XPath: могу ли я выбрать узел, следующий (или предыдущий) родственный брат соответствует некоторым критериям?

html html-agility-pack xpath

Вопрос

Я переформатирую HTML-документ с помощью пакета Agility Pack, и я столкнулся с ограничением моего понимания XPath.

В документе, с которым я работаю, следующая общая конструкция:

128 2

Что построено так:

128<img src="" style="display: none;" alt="^(" /><sup>2</sup><img src="" style="display: none;" alt=")" />

Таким образом, когда вы выбираете это и копируете его в буфер обмена, он превращается в:

128 ^ (2)

Теперь я хотел бы использовать XPath для удаления этих тегов img .

Вот что я имею до сих пор:

//img[@alt='^('  ???/sup]

Как выбрать элемент, основанный на существовании непосредственного брата?

Принятый ответ

видимо, это что-то вроде этого:

//img[@alt='^(' and following-sibling::*[1][self::sup]]

Это (и, я предполагаю, здесь):

//img

img (где угодно) ...

[@alt='^(' and  ...  ]

... чей атрибут alt равен '^(' и ...

following-sibling::*[1]

... чей первый следующий брат ...

[self::sup]

... может называть себя sup .


Популярные ответы

Сверху моей головы сделайте это сложным состоянием. Что-то вроде:

//img[@alt='^('  ???/sup AND preceding-sibling::*[1] AND following-sibling::*[1]]


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow