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)
            {

            }

そして、私は例外を取得します:

「=」文字、16 進値 0x3D は、名前に含めることはできません

更新 「=」から名前を自動的に消去するにはどうすればよいですか?

4

1 に答える 1

1

HTML は XML ではありません (XHTML でない限り)。一般的な HTML ドキュメントに XSLT を適用しようとすると、ほぼ確実に問題が発生します。探している変換が何であれ、別の方法を見つける必要があります。

HTML をプログラムで処理したい場合は、HTML Agility Packをお勧めします。

于 2012-08-23T12:56:21.710 に答える