使用xslt时,名称不能以'='字符十六进制值0x3d开头

时间:2012-08-23 12:50:19

标签: c#

我有一些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,不能包含在名称

更新 如何从'='自动清除名称?

1 个答案:

答案 0 :(得分:1)

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

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