2014-10-18 8 views
5

Aşağıdaki gibi bir HTML sayfam var. 'Span' etiketinden tek başına 'blah blah blah' almam gerek.HtmlAgilityPack kullanarak çocuk etiketleri olmadan iç metin tek başına nasıl alınır?

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

Bu bana tüm değerleri verir:

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

Bu bana boş veriyor:

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

nasıl HTMLAgilityPack kullanarak 'div' etiketinden önce metni alabilirim?

cevap

8

İkinci denemeniz oldukça yakındı. Metin düğümü çocuk span[@class='news'] değil kardeş arasında çünkü (ne önceki ne de şu) yerine /preceding-sibling::text() ait /text() kullanın:

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

Büyük cevabın parçası ve benim hata işaret için teşekkürler! –