如何使用HTMLAgilityPack修复html标签(缺少<open>&amp; <close>标签)</close> </open>

时间:2013-08-23 06:56:10

标签: c# dom html-agility-pack

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

的html

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

使用HTML敏捷包是否可以通过缺少关闭和打开标记来修复此类问题?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:11)

什么时候做 HtmlAgilityPack.HtmlDocument.LoadHTML(yourhtml) HTMLAgilityPack会自动为您修复代码,然后您可以使用以下代码访问这些代码:HtmlAgilityPack.HtmlDocument.DocumentNode.OuterHTML