0

我有一些html。我尝试用库清理它:http: //sourceforge.net/projects/tidynet/

这是我的代码:

//clean up html
            Tidy tidy = new Tidy();

            tidy.Options.DocType = DocType.Omit;
            tidy.Options.DropFontTags = true;
            tidy.Options.LogicalEmphasis = true;
            tidy.Options.Xhtml = true;
            tidy.Options.XmlOut = true;
            tidy.Options.MakeClean = true;
            tidy.Options.TidyMark = false;
            tidy.Options.CharEncoding = CharEncoding.UTF8;


            /* Declare the parameters that is needed */
            TidyMessageCollection tmc = new TidyMessageCollection();
            MemoryStream input = new MemoryStream();
            MemoryStream output = new MemoryStream();

            byte[] byteArray = Encoding.UTF8.GetBytes(report);
            input.Write(byteArray, 0, byteArray.Length);
            input.Position = 0;
            tidy.Parse(input, output, tmc);

            string cleanHtml = Encoding.UTF8.GetString(output.ToArray());

然后我尝试使用 xslt:

try
            {
                StringBuilder res = new StringBuilder();
                XslCompiledTransform xslt = new XslCompiledTransform();
                xslt.Load(XmlReader.Create(new StringReader(stylesheet.Content)));
                xslt.Transform(StringExtensions.ToXmlReader(cleanHtml), null, new StringWriter(res));
                var resultReport = res.ToString();
            }
            catch (Exception e)
            {

            }

我得到一个例外:

'=' 字符,十六进制值 0x3D,不能包含在名称中

更新 如何从“=”中自动清除名称?

4

1 回答 1

1

HTML 不是 XML(除非它是 XHTML)。尝试将 XSLT 应用于通用 HTML 文档几乎肯定会给您带来问题。您必须找到一种不同的方法来进行您正在寻找的任何转换。

如果您想以编程方式处理 HTML,那么我建议您使用HTML Agility Pack

于 2012-08-23T12:56:21.710 回答