XHTML-анализ с помощью HTMLAgilityPack

c# html-agility-pack

Вопрос

У меня есть список следующих элементов внутри элемента, который я нашел, используя HTMLAgilityPack.

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

Мне нужно разобрать весь текст из тега, без всякого там mumbo jumbo. Я пробовал (казалось бы!) Все, но он всегда выглядит так:

орда
Выравнивание / руководство и руководство по событиям ($ 50,00)

и иногда нравится:

орда
нивелирование
/ Dailies & Event Guide ($ 50.00)

и еще пару подобных вариантов. Я даже зашел так далеко, что распечатывал каждый символ в строке в виде байта, и я не нашел никаких строк или фидов, только то, что я ожидал, обычные буквы и пробелы. Вот полный источник html для справки, скопированный прямо со страницы.

<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> &amp; <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> &amp; <span style="color: #cc0000;">Horde</span> Achievements & Professions Guide ($30.00)</option>

Популярные ответы

По умолчанию <OPTION> обрабатывается Html Agility Pack как «Пустое», что означает, что он не нуждается в закрытии </OPTION> , поэтому в этом случае его нелегко поймать с помощью XPATH. Вы можете изменить это, используя коллекцию HtmlNode.ElementFlags.

Вот код, который должен делать то, что вы хотите:

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



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему