10

我有一个 html<div><h1> hello Hi</div> <div>hi </p></div>

所需输出:<div><h1> hello </h1></div> <div><p>hi </p></div>

使用 HTML 敏捷包是否可以解决缺少关闭和打开标签的此类类似问题?

4

2 回答 2

14

图书馆不够智能,无法p在您放置它的地方创建开口,但它足够智能,可以创建缺失的h1. 通常,它总是创建有效的 HTML,但并不总是您所期望的。

所以这段代码:

        HtmlDocument doc = new HtmlDocument();
        doc.Load(yourhtml);
        doc.Save(Console.Out);

将转储这个:

<div><h1> hello Hi</h1></div> <div>hi <p></div>

这不是您想要的,而是有效的 HTML。你也可以像这样添加一个小技巧:

        HtmlNode.ElementsFlags["p"] = HtmlElementFlag.Closed;
        HtmlDocument doc = new HtmlDocument();
        doc.Load(yourhtml);
        doc.Save(Console.Out);

这将转储:

<div><h1> hello Hi</h1></div> <div>hi <p></p></div>
于 2013-08-23T08:06:36.967 回答
13

执行 HtmlAgilityPack.HtmlDocument.LoadHTML(yourhtml)HTMLAgilityPack 时会自动为您修复标签,然后您可以使用以下命令访问这些标签:HtmlAgilityPack.HtmlDocument.DocumentNode.OuterHTML

于 2014-03-28T23:13:42.427 回答