Domanda

Ho provato diverse combinazioni senza successo. Il percorso completo di xpath per quei dati è .//*[@id='detail_row_seek_37878']/td Il problema è la porzione numero '37878' cambia per ogni nodo e quindi non posso usare un foreach per fare un ciclo attraverso i nodi. C'è un modo per usare un carattere jolly e ridurre xpath al .//*[@id='detail wildcard , nel tentativo di ignorare la parte del valore assoluto? Sto usando il pacchetto di agilità html su questo.

 HtmlNode ddate = node.SelectSingleNode(".//*[@id='detail_row_seek_37878']/td");

Risposta accettata

Estrai la porzione che non cambia:

//*[starts-with(@id, 'detail_row_seek')]/td

Tecniche e funzioni correlate

Per abbinare elementi il ​​cui attributo id contiene la stringa _row_ al settimo carattere :

//*[substring(@id, 7, 5)='_row_']/td 

Per abbinare elementi il ​​cui attributo id contiene il dettaglio del detail_ in qualsiasi posizione:

//*[contains(@id, 'detail_')]/td 

Per abbinare elementi il ​​cui attributo id termina con il testo detail_row_seek :

//*['detail_row_seek' = substring(@id, 
        string-length(@id) - string-length('detail_row_seek') + 1)]/td 


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é