Analyse XHTML avec HTMLAgilityPack

c# html-agility-pack

Question

J'ai une liste des éléments suivants dans un élément que j'ai trouvé en utilisant HTMLAgilityPack.

<option value="67"><span style="color: #cc0000;">Horde</span> Leveling / Dailies & Event Guide ($50.00)</option>

Ce que je dois faire, c'est analyser tout le texte de la balise, sans tout le charabia. J'ai tout essayé (apparemment!), Mais il en ressort toujours ceci:

Horde
Nivellement / Quotidiens & Guide de l'événement (50,00 $)

et parfois comme:

Horde
Mise à niveau
/ Quotidiens et guide de l'événement (50,00 $)

et quelques autres variations comme ça. Je suis même allé jusqu'à imprimer chaque caractère de la chaîne sous forme d'octet, et je n'ai trouvé aucun saut de ligne ni source, uniquement ce que j'attendais, des lettres normales et des espaces. Voici la source complète du code HTML de référence, copiée directement de la page.

<option value="67"><span style="color: #cc0000;">Horde</span> Leveling / Dailies & Event Guide ($50.00)</option>

Réponse populaire

Par défaut, la <OPTION> est traitée par Html Agility Pack comme un "vide", ce qui signifie qu’elle n’a pas besoin de fermeture </OPTION> , c’est pourquoi dans ce cas, il n’est pas facile de rattraper XPATH. Vous pouvez changer cela en utilisant la collection HtmlNode.ElementFlags.

Voici un code qui devrait faire ce que vous voulez:

HtmlDocument doc = new HtmlDocument();
HtmlNode.ElementsFlags.Remove("option");
doc.LoadHtml(yourHtml);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//option"))
{
    Console.WriteLine(node.InnerText);
}



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