2011-01-14 3 views
3

Я знаю, как читать строку в txt-файле, но по какой-то причине C# не обнаруживает конца строки в файлах HTML. Этот код в основном открывает html-файл и пытается проанализировать строку за строкой в ​​поисках указанной строки. Даже когда просто пытается напечатать первую строку текста в HTML-файле, не отображается.Как читать строку HTML с помощью C#

using (StreamReader sr = new StreamReader("\\\\server\\myFile.html")) 
     { 
      String line; 
      while ((line = sr.ReadLine()) != null) 
      { 
       if(line == ("<td><strong>String I wantstrong></td>")) 
       { 
        Label1.Text = "Text Found"; 
        break; 
       } 
      } 
     } 

Я попытался это с помощью простого текстового файла и он прекрасно работает, но только не при попытке разобрать файл HTML.

Спасибо.

+0

Окончание 'strong' является окончательным тегом. –

+0

Жаль, что я испортился при копировании и вставке, «<» есть в моем коде. Кроме того, скобки '(' и ')' не находятся в моем коде. – Rupert

+0

Есть ли что-нибудь в файле? Имеет ли пользователь, выполняющий приложение, разрешение на использование этого сетевого ресурса? Работает ли этот код, если вы скопируете файл локально? Если вы вломились в цикл, это точка останова? Мне кажется, что работа по отладке, которая должна быть сделана здесь, довольно проста ... – cdhowie

ответ

0

Если вы знаете этот HTML-код, вы разбираетесь в XHTML, почему бы не проанализировать этот HTML-код как XML с помощью System.XML?

4

Самый лучший способ на сегодняшний день является использование HTML Agility Pack

Более подробно об этом можно найти на предыдущем переполнение стека Вопрос

Looking for C# HTML parser

0

Ваш внешний цикл, который читает строки работает нормально. Я думаю, один из следующих берется место:

  • Файл HTML пуст
  • Первая строка в HTML-файл пуст

В любом случае, вы ничего не увидите, распечатаны.

Теперь к вашей петле:

Скорее всего, вы не видите, что вы ожидаете, потому что

if(line == ("<td><strong>String I wantstrong></td>")) 
{ 
    Label1.Text = "Text Found"; 
    break; 
} 

выглядит для EXACT матча. Если это ваш фактический код, вам не хватает открытой скобки </ на </strong>, и вы, вероятно, забываете, что в вашем HTML-контенте есть пробел (отступ).

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