我有一些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,不能包含在名称
中更新 如何从'='自动清除名称?
答案 0 :(得分:1)
HTML不是XML(除非它是XHTML)。尝试将XSLT应用于通用HTML文档几乎肯定会给您带来问题。你必须找到一种不同的方式来做你正在寻找的任何转变。
如果您想以编程方式处理HTML,那么我建议使用HTML Agility Pack。