Analisi XHTML con HTMLAgilityPack

c# html-agility-pack

Domanda

Ho una lista dei seguenti elementi all'interno di un elemento che ho trovato usando HTMLAgilityPack.

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

Quello che devo fare è analizzare tutto il testo dal tag, senza tutti i mumbo jumbo presenti. Ho provato (apparentemente!) Tutto, ma esce sempre così:

Orda
Guida di livellamento / quotidiani ed eventi ($ 50,00)

e a volte piace:

Orda
Livellamento
/ Dailies & Event Guide ($ 50,00)

e un paio di altre variazioni del genere. Sono persino andato così lontano da stampare ogni carattere nella stringa come un byte, e non ho trovato linebreak o feed, solo quello che mi aspettavo, lettere e spazi normali. Ecco la fonte completa dell'HTML come riferimento, copiata direttamente dalla pagina.

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

Risposta popolare

Per impostazione predefinita, il tag <OPTION> viene trattato da Html Agility Pack come "Vuoto", il che significa che non ha bisogno di una chiusura </OPTION> , ecco perché in questo caso, non è facile catturare con XPATH. Puoi cambiarlo usando la collezione HtmlNode.ElementFlags.

Ecco un codice che dovrebbe fare ciò che vuoi:

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché