Html Agility Pack - 从html文档中获取html片段

时间:2010-12-03 18:16:13

标签: c# html html-agility-pack

使用html敏捷包;如何从完整的HTML文档中提取html“片段”?出于我的目的,html“片段”被定义为<body>标签内的所有内容。

例如:

示例输入:

<html>
   <head>
     <title>blah</title>
   </head>
   <body>
    <p>My content</p>
   </body>
</html>

期望输出:

<p>My content</p>

理想情况下,如果内容不包含<html><body>元素,我希望不会更改内容(例如,假设我首先传递了一个片段,如果它不是这是一个完整的html文档)

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:6)

我认为你需要分片。

您可以按如下方式为body或html执行文档的选择节点

doc.DocumentNode.SelectSingleNode("//body") // returns body with entire contents :)

然后您可以检查条件的空值,如果提供了该值,则可以按原样获取字符串。

希望有所帮助:)

答案 1 :(得分:5)

以下内容可行:

public string GetFragment(HtmlDocument document)
{
   return doc.DocumentNode.SelectSingleNode("//body") == null ? doc.DocumentNode.InnerHtml : doc.DocumentNode.SelectSingleNode("//body").InnerHtml;
}