XPath: Puis-je sélectionner un nœud dont le frère suivant (ou précédent) correspond à certains critères?

html html-agility-pack xpath

Question

Je suis en train de reformater un document HTML à l'aide du pack Agility et je suis confronté à une limite de compréhension de XPath.

Dans le document sur lequel je travaille, voici une construction commune:

128 2

Qui est construit comme ça:

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

Donc, lorsque vous sélectionnez cela et que vous le copiez dans le presse-papiers, il se transforme en:

128 ^ (2)

Maintenant, je voudrais utiliser XPath pour supprimer ces balises img .

Voici ce que j'ai jusqu'à présent:

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

Comment sélectionner un élément en fonction de l'existence d'un frère immédiat?

Réponse acceptée

apparemment c'est quelque chose comme ça:

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

C'est (et, je suppose, ici):

//img

Un img (n'importe où) ...

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

... dont l'attribut alt est '^(' et ...

following-sibling::*[1]

... dont le premier frère suivant ...

[self::sup]

... Peut s'appeler un sup .


Réponse populaire

De mémoire, faites-en un état composé. Quelque chose comme:

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow