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="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>
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);
}