Tidy.NET - エラーメッセージを表示する方法?

私のコードでは、Tidy.NETを使ってHTML文書を "クリーン"にしています。場合によっては、返されるHTMLは空であり、理由はわかりません。

変数 messages にはメッセージコレクションが含まれており、HTMLの処理後に Count プロパティの値は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());

私は何が起こっているのか知るために何をする必要がありますか?

1

3 答え

私は方法を発見しました。メッセージコレクションを反復処理する必要があります。 Infoメッセージと警告もリストに追加されるので、 Level プロパティを確認する必要があります。エラー(または警告)を取得します。

foreach (TidyMessage message in messages) 
{
    if (message.Level == MessageLevel.Error) 
    {
       //error handling here
    }
}
2
追加された

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

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

私はこれが他の誰かを助けることを望む。

サイモン

0
追加された

私は今日も同じ問題を抱えており、TidyNetのソースコードを変更することで解決しました。

クラス TidyMessageCollection で、保護された InnerLists を解析エラーで公開する MessageLists というパブリックプロパティが作成されました。

In 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
}
0
追加された