XHTML Parsing mit HTMLAgilityPack

c# html-agility-pack

Frage

Ich habe eine Liste der folgenden Elemente in einem Element, das ich mit HTMLAgilityPack gefunden habe.

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

Was ich tun muss, ist den gesamten Text aus dem Tag zu analysieren, ohne den ganzen Hokuspokus drin. Ich habe (scheinbar!) Alles versucht, aber es sieht immer so aus:

Horde
Leveling / Dailies & Event Guide ($ 50,00)

und manchmal wie:

Horde
Nivellierung
/ Dailies & Event Guide ($ 50,00)

und ein paar andere Variationen wie das. Ich bin sogar so weit gegangen, jedes Zeichen in der Zeichenfolge als Byte auszudrucken, und ich habe keine Zeilenumbrüche oder Feeds gefunden, nur was ich erwartet habe, normale Buchstaben und Leerzeichen. Hier ist die vollständige Quelle des HTML als Referenz, direkt von der Seite kopiert.

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

Beliebte Antwort

Standardmäßig wird das <OPTION> -Tag von Html Agility Pack als "leer" behandelt, was bedeutet, dass es kein abschließendes </OPTION> , weshalb es in diesem Fall nicht einfach ist, mit XPATH zu fangen. Sie können dies mithilfe der HtmlNode.ElementFlags-Auflistung ändern.

Hier ist ein Code, der tun sollte, was Sie wollen:

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



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum