我的代码使用Tidy.NET来“清理”HTML文档。在某些情况下,返回的HTML是空的,我不知道为什么。
变量messages
包含一个消息集合,其属性Count
在处理HTML后的值为2。尽管知道这一点,但我不知道如何查看错误消息。
这是代码:
var tidy = new Tidy();
var input = new MemoryStream();
var output = new MemoryStream();
byte[] byteArray = Encoding.UTF8.GetBytes(html);
input.Write(byteArray, 0, byteArray.Length);
input.Position = 0;
var messages = new TidyMessageCollection();
tidy.Parse(input, output, messages);
html = Encoding.UTF8.GetString(output.ToArray());
我需要做些什么才能知道发生了什么?
答案 0 :(得分:2)
Level
属性仅获取错误(或警告,无论您想要什么)。
foreach (TidyMessage message in messages)
{
if (message.Level == MessageLevel.Error)
{
// error handling here
}
}
答案 1 :(得分:0)
我今天遇到了同样的问题,修改了TidyNet的源代码就解决了。
在类TidyMessageCollection
中,我创建了一个名为MessageLists
的公共属性,它使用解析错误公开受保护的InnerLists
:
在Tidy.TidyMessageCollection
public ArrayList MessageList
{
get { return InnerList; }
}
现在,您可以在Tidy项目之外的Parse
调用之后阅读所有错误消息,如下所示:
Tidy tidy = new Tidy();
TidyMessageCollection tmc = new TidyMessageCollection();
MemoryStream input = new MemoryStream();
MemoryStream output = new MemoryStream();
tidy.Parse(input, output, tmc);
//Same code than you
foreach(TidyMessage message in tmc.MessageList)
if (message.Level == MessageLevel.Error)
{
// error handling here
}
答案 2 :(得分:0)
今天遇到同样的问题,但并不是真的热衷于修改源代码并维护它的副本,所以这里是我的解决方案。
var tidyErrors = (from TidyMessage msg in tmc where msg.Level == MessageLevel.Error select msg.Message).ToList();
我希望这有助于其他人。
西蒙