Анализ HTMLAgilityPack в InnerHTML - PullRequest
2 голосов
/ 28 августа 2009
<div>
<b>Token1</b>
Token2
<b>Token3</b>
</div>

Я пытаюсь извлечь Token2 из div

Мне удалось получить Token1 и Token3 с:

HtmlNodeCollection headerFooter = doc.DocumentNode.SelectNodes("//div//b");

Как я могу напрямую извлечь Token2 с помощью HTMLAgilityPack?

Один грязный вариант - заменить Token1 и Token2 на string.empty в doc.DocumentNode.SelectNodes ("// div"). InnerText, но я думаю, это можно сделать более чистым способом с помощью HTMLAgilityPack ...

1 Ответ

6 голосов
/ 28 августа 2009

Текст находится в текстовых узлах; поэтому вы должны иметь возможность посмотреть на "// div / text ()" и объединить:

StringBuilder sb = new StringBuilder();
foreach (HtmlAgilityPack.HtmlTextNode node in
      doc.DocumentNode.SelectNodes("//div/text()"))
{
    sb.Append(node.Text.Trim());
}
string s = sb.ToString();
...