Анализ HTMLAgilityPack в InnerHTML

2
<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...

Теги:
html-agility-pack

1 ответ

6

Текст находится в текстовых узлах; поэтому вы должны иметь возможность посмотреть "//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();
  • 0
    Даже используя text () у меня будут Token1 и Token3.
  • 0
    Нет, вы не будете ... если вы не делаете // text () или // div / * / text (); // div / text () возвращает только те, которые находятся непосредственно под div. Или для определенного элемента, SelectNodes ("text ()")
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню