2012-02-06 35 views
1

我的代碼使用Tidy.NET來「清理」HTML文檔。在某些情況下,返回的HTML是空的,我不知道爲什麼。Tidy.NET - 如何查看錯誤消息?

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

我需要做的,知道是怎麼回事?

回答

2

我找到了一種方法。您必須迭代消息收集。信息消息和警告也被添加到列表中,因此您必須檢查Level屬性只獲取錯誤(或警告,無論您想要什麼)。

foreach (TidyMessage message in messages) 
{ 
    if (message.Level == MessageLevel.Error) 
    { 
     // error handling here 
    } 
} 
0

我今天有同樣的問題,它解決了修改TidyNet的源代碼。

在類TidyMessageCollection我是創建了一個名爲MessageLists的公共屬性暴露出保護InnerLists與解析錯誤:

Tidy.TidyMessageCollection

public ArrayList MessageList 
{ 
    get { return InnerList; } 
} 

現在,你可以閱讀後的錯誤信息Parse這樣的Tidy項目之外的電話:

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 
} 
0

今天遇到同樣的問題,但並不真正熱衷於修改源代碼並維護其副本,因此這裏是我的解決方案。

var tidyErrors = (from TidyMessage msg in tmc where msg.Level == MessageLevel.Error select msg.Message).ToList(); 

我希望這可以幫助別人。

Simon

相關問題