Могу ли я использовать Html Agility Pack Для синтаксического анализа HTML-фрагмента?
-
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> тегом в нем и сломалось бы, если бы код изменился.