Tidy.NET-如何查看错误消息
本文关键字:错误 消息 何查看 NET- Tidy | 更新日期: 2023-09-27 18:22:35
我的代码使用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());
我需要做什么才能知道发生了什么?
我找到了一种方法。您必须遍历消息集合。信息消息和警告也会添加到列表中,因此您必须检查Level
属性,只获取错误(或警告,无论您想要什么)。
foreach (TidyMessage message in messages)
{
if (message.Level == MessageLevel.Error)
{
// error handling here
}
}
我今天遇到了同样的问题,修改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
}
今天遇到了同样的问题,但并不热衷于修改源代码和维护它的副本,所以这是我的一行解决方案。
var tidyErrors = (from TidyMessage msg in tmc where msg.Level == MessageLevel.Error select msg.Message).ToList();
我希望这能帮助其他人。
Simon