2

当我尝试使用 Tidy.NET 清理 HTML 代码时,它破坏了 HTML 实体,例如e @ors并使 HTML 不可读。我尝试了不同的设置,但所有变体都不成功。

有人知道如何解决这个问题吗?可能存在修补程序吗?

编辑 1:我使用 Tidy 的这种配置

Tidy doc = new Tidy();
doc.Options.DocType = DocType.User;
doc.Options.Xhtml = true;
doc.Options.WrapScriptlets = true;
doc.Options.LogicalEmphasis = true;
doc.Options.DropFontTags = true;
doc.Options.DropEmptyParas = true;
doc.Options.QuoteAmpersand = true;
doc.Options.TidyMark = false;
doc.Options.MakeClean = true;
doc.Options.IndentContent = true;
doc.Options.SmartIndent = true;
doc.Options.Spaces = 0;
doc.Options.WrapLen = 0;
doc.Options.CharEncoding = CharEncoding.UTF8;
doc.Options.RawOut = true;
doc.Options.EncloseText = false;

然后更改 doc.Options.CharEncoding = CharEncoding.UTF8;doc.Options.CharEncoding = CharEncoding.Raw;但没有任何反应。

4

2 回答 2

0

您可以使用 System.String 类的 Replace 方法来修复损坏的 HTML

于 2013-06-04T11:00:21.807 回答
0

我找到了解决办法!

在文件 Lexer.cs 的第 371 行编号应该是 HEX。我把它改成

if (numeric && ((c == 'x') || (c == 'a') || (c == 'b') || (c == 'c') || (c == 'd') || (c == 'e') || (c == 'f') || (c == 'A') || (c == 'B') || (c == 'C') || (c == 'D') || (c == 'E') || (c == 'F')|| ((map & DIGIT) != 0)))

和解析器变得正常工作。

于 2013-06-04T12:12:47.900 回答