Можно ли использовать Html Agility Pack для разбора фрагмента HTML? - PullRequest
7 голосов
/ 29 марта 2010

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

Например:

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

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

Ответы [ 2 ]

9 голосов
/ 29 марта 2010

Если это 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;
2 голосов
/ 04 апреля 2010

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

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

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

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

...