我有一个带<div><h1> hello Hi</div> <div>hi </p></div>
必需输出:<div><h1> hello </h1></div> <div><p>hi </p></div>
使用HTML敏捷包是否可以通过缺少关闭和打开标记来修复此类问题?
答案 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