2012-02-06 3 views
1

Мой код использует Tidy.NET для «очистки» HTML-документов. В некоторых случаях возвращаемый HTML пуст, и я не знаю, почему.Tidy.NET - как просмотреть сообщения об ошибках?

Переменная messages содержит коллекцию сообщений, а ее свойство Count имеет значение 2 после обработки HTML. Несмотря на это, я не знаю, как реально просматривать сообщения об ошибках.

Это код:

 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

 Смежные вопросы

  • Нет связанных вопросов^_^