开发者

XPath: Can I select a node whose next (or previous) sibling matches some criteria?

开发者 https://www.devze.com 2023-01-06 14:21 出处:网络
I am reformatting an HTML document using the Agility Pack, and I\'ve run into a limitation of my understanding of XPath.

I am reformatting an HTML document using the Agility Pack, and I've run into a limitation of my understanding of XPath.

In the document I'm working with, the following is a common construct:

1282

Which is built like this:

128<开发者_开发百科img src="" style="display: none;" alt="^(" /><sup>2</sup><img src="" style="display: none;" alt=")" />

So, when you select that and copy it to the clipboard it turns into:

128^(2)

Now, I would like to use XPath to remove these img tags.

Here is what I have so far:

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

How do I select an element based on existence of an immediate sibling?


apparently it is something like this:

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

That is (and, I'm guessing, here):

//img

An img (anywhere)...

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

... whose alt attribute is '^(' and ...

following-sibling::*[1]

... whose first following sibling ...

[self::sup]

... can call itself a sup.


Off the top of my head, make it a compound condition. Something like:

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

精彩评论

暂无评论...
验证码 换一张
取 消