2014-10-18 13 views
5

Ho una pagina HTML come sotto. Ho bisogno di prendere il 'blah blah blah' solo dal tag 'span'.Come ottenere il testo interno da solo senza i tag secondari utilizzando HtmlAgilityPack?

<span class="news"> 
blah blah blah 
<div>hello</div> 
<div>bye</div> 
</span> 

Questo mi dà tutti i valori:

div.SelectSingleNode(".//span[@class='news']").InnerText.Trim(); 

Questo mi dà nulla:

div.SelectSingleNode(".//span[@class='news']/preceding-sibling::text()").InnerText.Trim(); 

Come faccio ad avere il testo prima del tag 'div' utilizzando HtmlAgilityPack?

risposta

8

Il tuo secondo tentativo era abbastanza vicino. Utilizzare /text() invece di /preceding-sibling::text(), perché il nodo di testo è bambino del span[@class='news'] non fratello (né precedenti né in seguito):

div.SelectSingleNode(".//span[@class='news']/text()") 
    .InnerText 
    .Trim(); 
+0

Grande pezzo di risposta e grazie per aver ricordato il mio errore! –

Problemi correlati