2012-02-06 5 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

私はパースエラーと保護InnerLists公開しMessageListsと呼ばれるパブリックプロパティ作成されました:

public ArrayList MessageList 
{ 
    get { return InnerList; } 
} 

Tidy.TidyMessageCollectionでは、あなたは、後にすべてのエラーメッセージを読むことができます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

今日は同じ問題に立ち向かいましたが、ソースを変更してコピーを維持することに熱心ではありませんので、ここで私の解決策を1行にまとめます。

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

私はこれが他の人に役立つことを望みます。

シモン

関連する問題