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

rag*_*gmn 10 c# dom html-agility-pack

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

要求输出: <div><h1> hello </h1></div> <div><p>hi </p></div>

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

Sim*_*ier 14

图书馆不够聪明,无法创建p你放置它的开口,但它足够聪明,可以创建缺失h1.一般来说,它总是创建有效的HTML,但并不总是你期望的那个.

所以这段代码:

        HtmlDocument doc = new HtmlDocument();
        doc.Load(yourhtml);
        doc.Save(Console.Out);
Run Code Online (Sandbox Code Playgroud)

会抛弃这个:

<div><h1> hello Hi</h1></div> <div>hi <p></div>
Run Code Online (Sandbox Code Playgroud)

这不是你想要的,但是有效的HTML.你还可以添加一个这样的小技巧:

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

会抛弃这个:

<div><h1> hello Hi</h1></div> <div>hi <p></p></div>
Run Code Online (Sandbox Code Playgroud)

  • doc.DocumentNode.OuterHtml包含完整文档作为文本. (2认同)

小智 11

在做 HtmlAgilityPack.HtmlDocument.LoadHTML(yourhtml)HTMLAgilityPack时会自动为您修复标记,然后您可以使用以下方法访问这些标记:HtmlAgilityPack.HtmlDocument.DocumentNode.OuterHTML