XPath: Могу ли я выбрать узел, чей следующий (или предыдущий) брат соответствует некоторым критериям? - PullRequest
2 голосов
/ 08 июля 2010

Я переформатирую документ 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]

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

Ответы [ 2 ]

2 голосов
/ 08 июля 2010

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

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

То есть (и, я думаю, здесь):

//img

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

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

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

following-sibling::*[1]

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

[self::sup]

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

0 голосов
/ 08 июля 2010

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

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