Comment obtenir le texte interne seul sans les balises enfant utilisant HtmlAgilityPack?

c# html-agility-pack

Question

J'ai une page HTML comme ci-dessous. Je dois prendre le "bla bla bla" seul de la balise "span".

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

Cela me donne toutes les valeurs:

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

Cela me donne null:

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

Comment obtenir le texte avant la balise 'div' en utilisant HtmlAgilityPack?

Réponse acceptée

Votre 2e essai était assez proche. Utilisez /text() au lieu de /preceding-sibling::text() , car le nœud de texte est enfant de la span[@class='news'] non frère (ni précédent ni suivant):

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi