7

可以使用 Html Agility Pack 来解析 html 字符串片段吗?

如:

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

然后提取所有<b>标签?到目前为止,我看到的所有示例都像 html 文档一样加载。

4

3 回答 3

10

如果它是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;
于 2010-03-29T05:13:19.780 回答
2

我不认为这真的是 HtmlAgilityPack 的最佳用途。

通常我看到人们试图使用正则表达式解析大量的 html,我将它们指向 HtmlAgilityPack,但在这种情况下,我认为使用正则表达式会更好。

Roy Osherove 有一篇博客文章描述了如何从片段中删除所有 html:

即使您确实使用 Mika Kolari 的示例获得了正确的 xpath,这也仅适用于其中带有 <b> 标记的片段,并且如果代码更改会中断。

于 2010-04-04T14:34:40.240 回答
0

当我搜索相同的内容时,出现了这个答案。我不知道自从回答后功能是否发生了变化,但下面的应该会更好。

$string = '<b>Some code </b>'
[HtmlAgilityPack.HtmlNode]::CreateNode($string)
于 2021-08-31T17:33:07.703 回答