2014-10-18 5 views
5

У меня есть HTML-страница, как показано ниже. Мне нужно взять «бла-бла-бла» только из тега «span».Как получить внутренний текст без дочерних тегов, используя HtmlAgilityPack?

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

Это дает мне все значения:

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

Это дает мне нуль:

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

Как получить текст перед тегом 'сНа' с помощью HtmlAgilityPack?

ответ

8

Ваша вторая попытка была довольно близка. Используйте /text() вместо /preceding-sibling::text(), поскольку текстовый узел является ребенок из span[@class='news'] не собрата (ни предшествующее, ни ниже):

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

Большой кусок ответа и спасибо за указание свою ошибку! –

Смежные вопросы