Могу ли я использовать Html Agility Pack Для синтаксического анализа HTML-фрагмента?

StackOverflow https://stackoverflow.com/questions/2535878

  •  22-09-2019
  •  | 
  •  

Вопрос

Можно ли использовать Html Agility Pack для синтаксического анализа фрагмента html-строки?

Такие , как:

var fragment = "<b>Some code </b>";

Затем извлеките все <b> метки?Все примеры, которые я видел до сих пор, загружались как html-документы.

Это было полезно?

Решение

Если это html, то да.

string str = "<b>Some code</b>";
// not sure if needed
string html = string.Format("<html><head></head><body>{0}</body></html>", str);
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);

// look xpath tutorials for how to select elements
// select 1st <b> element
HtmlNode bNode = doc.DocumentNode.SelectSingleNode("b[1]");
string boldText = bNode.InnerText;

Другие советы

Я не думаю, что это действительно лучшее использование HtmlAgilityPack.

Обычно я вижу людей, пытающихся разобрать большие объемы html с помощью регулярных выражений, и я указываю им на HtmlAgilityPack, но в этом случае, я думаю, было бы лучше использовать регулярное выражение.

У Роя Ошерова есть сообщение в блоге, описывающее, как вы можете удалить весь html из фрагмента:

Даже если вы получили правильный xpath с примером Мики Колари, это сработало бы только для фрагмента с <b> тегом в нем и сломалось бы, если бы код изменился.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top