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="13"><span style="color: #0000ff;">Alliance</span> Leveling Guide ($30.00)</option>
<option value="12"><span style="color: #cc0000;">Horde</span> Leveling Guide ($30.00)</option>
<option value="46"><span style="color: #cc0000;">Horde</span> Dailies & Events Guide ($25.00)</option>
<option value="67"><span style="color: #cc0000;">Horde</span> Leveling / Dailies & Event Guide ($50.00)</option>
<option value="11"><span style="color: #0000ff;">Alliance</span> & <span style="color: #cc0000;">Horde</span> Leveling Guide ($50.00)</option>
<option value="97"><span style="color: #0000ff;">Alliance</span> Achievements & Professions Guide ($20.00)</option>
<option value="98"><span style="color: #cc0000;">Horde</span> Achievements & Professions Guide ($20.00)</option>
<option value="99"><span style="color: #0000ff;">Alliance</span> & <span style="color: #cc0000;">Horde</span> Achievements & Professions Guide ($30.00)</option>
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);
}