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

时间:2012-02-06 16:35:11

标签: c# .net html tidy

我的代码使用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());

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

3 个答案:

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

我希望这有助于其他人。

西蒙