C#版的HTML Tidy?

mpe*_*pen 9 .net html c# htmltidy

我只是在寻找一种非常简单的方法来清理一些HTML(可能带有嵌入式JavaScript代码).我尝试了两个 不同的 HTML Tidy .NET端口,两者都抛出异常......

对不起,"干净"是指"缩进".HTML根本没有格式错误.这是严格的XHTML.


终于得到了一些使用SGML的东西,但这是一个非常荒谬的代码块,可以缩进一些HTML.

private static string FormatHtml(string input)
{
    var sgml = new SgmlReader {DocType = "HTML", InputStream = new StringReader(input)};
    using (var sw = new StringWriter())
    using (var xw = new XmlTextWriter(sw) { Indentation = 2, Formatting = Formatting.Indented })
    {
        sgml.Read();
        while (!sgml.EOF)
            xw.WriteNode(sgml, true);
    }
    return sw.ToString();
}
Run Code Online (Sandbox Code Playgroud)

bh_*_*th0 10

AngleSharp 100% c#

    var parser = new HtmlParser();

    var document = parser.Parse("<html><head></head><body><i></i></body></html>");

    var sw = new StringWriter();
    document.ToHtml(sw, new PrettyMarkupFormatter());

    var HTML_prettified = sw.ToString());
Run Code Online (Sandbox Code Playgroud)


won*_*nea 9

HTML Tidy的最新C#包装器由Mark Beaton完成,它似乎比您引用的链接(2003)更新.另外值得注意的是,Mark也提供了可引用的可执行文件,而不是从官方网站上提取它们.这应该可以很好地组织和验证您的HTML.

  • 构建仅适用于tidylib,而不是C#包装器.您还需要从源代码构建TidyManaged.我正在运行64位机器,但无论出于何种原因,只有32位tidylib dll可以运行.我不得不把它放在c:/ windows/system中.此外,Beaton提供的示例不会缩进您的HTML - 我唯一想要的东西 - 您需要添加`doc.IndentBlockElements = AutoBool.Auto` ...有点难以弄清楚. (2认同)