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());

我需要做什么才能知道发生了什么?

Tidy.NET-如何查看错误消息

我找到了一种方法。您必须遍历消息集合。信息消息和警告也会添加到列表中,因此您必须检查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