XPath: Posso selezionare un nodo il cui fratello successivo (o precedente) corrisponde ad alcuni criteri?

html html-agility-pack xpath

Domanda

Sto riformattando un documento HTML utilizzando l'Agility Pack e ho riscontrato una limitazione della mia comprensione di XPath.

Nel documento con cui sto lavorando, il seguente è un costrutto comune:

128 2

Quale è costruito in questo modo:

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

Quindi, quando lo selezioni e lo copia negli appunti si trasforma in:

128 ^ (2)

Ora, vorrei usare XPath per rimuovere questi tag img .

Ecco cosa ho finora:

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

Come seleziono un elemento in base all'esistenza di un fratello immediato?

Risposta accettata

a quanto pare è qualcosa del genere:

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

Cioè (e, suppongo, qui):

//img

Un img (ovunque) ...

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

... il cui attributo alt è '^(' e ...

following-sibling::*[1]

... il cui primo fratello successivo ...

[self::sup]

... può chiamarsi un sup .


Risposta popolare

Fuori dalla mia testa, rendilo una condizione composta. Qualcosa di simile a:

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


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché