Comment extraire du texte à l'intérieur d'une balise div en utilisant htmlagilitypack

c# html html-agility-pack winforms

Question

Je veux extraire le texte "Certains textes vont ici" entre la classe div. J'utilise html agility pack, et c #

<div class="productDescriptionWrapper">
Some Text Goes here...
<div class="emptyClear"> </div>
</div>

c'est ce que j'ai

<div class="productDescriptionWrapper">
Some Text Goes here...
<div class="emptyClear"> </div>
</div>

Je reçois cette erreur:

<div class="productDescriptionWrapper">
Some Text Goes here...
<div class="emptyClear"> </div>
</div>

Je sais comment extraire si le texte est b / wa <h1> ou <p> au lieu de "div" dans Descendants, je dois donner "h1" ou "p".

Quelqu'un s'il vous plaît aider.

Réponse acceptée

Utilisez des guillemets simples tels que

//div[@class='productDescriptionWrapper']

pour obtenir tous les descendants de tous types, utilisez:

//div[@class='productDescriptionWrapper']//* ,

pour obtenir tous les descendants d'un type spécifique, tel qu'un p utilisez //div[@class='productDescriptionWrapper']//p .

pour obtenir tous les descendants qui sont soit un div ou un p :

//div[@class='productDescriptionWrapper']//*[self::div or self::p] 

disons que vous vouliez obtenir tous les nœuds de texte descendant non vides, puis utilisez:

//div[@class='productDescriptionWrapper']//*[self::div or self::p] 

Réponse populaire

Il n’existe aucun moyen d’obtenir une exception de référence null, doc est créée à partir de l’extrait de code HTML que vous avez posté. Quoi qu'il en soit, si vous vouliez obtenir du texte dans le <div> extérieur, mais pas à l'intérieur, utilisez alors xpath /text() qui signifie obtenir des nœuds de texte enfant directs .

Par exemple, étant donné cet extrait HTML:

var html = @"<div class=""productDescriptionWrapper"">
Some Text Goes here...
<div class=""emptyClear"">Don't get this one</div>
</div>";
var doc = new HtmlDocument();
doc.LoadHtml(html);

..cette expression renvoie le texte à partir de la <div> extérieure uniquement:

var html = @"<div class=""productDescriptionWrapper"">
Some Text Goes here...
<div class=""emptyClear"">Don't get this one</div>
</div>";
var doc = new HtmlDocument();
doc.LoadHtml(html);

..while en revanche, ce qui suit retourne tout le texte:

var html = @"<div class=""productDescriptionWrapper"">
Some Text Goes here...
<div class=""emptyClear"">Don't get this one</div>
</div>";
var doc = new HtmlDocument();
doc.LoadHtml(html);



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