Priya Karthish Ответов: 2

Извлеките две разные строки из HTML файла и запишите их в текстовый файл с помощью языка Си#


Мне нужно извлечь строки, содержащие "заголовок" и "заголовок", из 500 HTML-файлов, хранящихся в папке.
Я попробовал код ниже, но когда я его выполняю, он говорит об ошибке в streamwriter.

Что я уже пробовал:

foreach (string arg in Directory.GetFiles(@"C:\Users\htmlfiles") )
           {
               string line;
               StreamReader file =new StreamReader(arg,Encoding.GetEncoding(1252));
               StreamWriter file2 = new  StreamWriter(@"C:\Users\outputfile.txt");
               while ((line = file.ReadLine()) != null)
               {
                       if (line.Contains("<TITLE>"))
                       {
                          file2.WriteLine(line);
                       }
                       if (line.Contains("<HEADER>"))
                       {
                           file2.WriteLine(line);
                       }

                   }
         file2.Close();
               }
           }

F-ES Sitecore

Если ваш код выдает ошибку, всегда говорите, что это за сообщение об ошибке, оно существует не просто так.

Во-вторых, вы можете посмотреть на пакет HTML Agility Pack, чтобы сделать это за вас. Проблема с вашим кодом заключается в том, что он не будет работать, когда тег разделен по строкам

<название>
мой титул
</title>

2 Ответов

Рейтинг:
8

RickZeeland

int counter = 0;
string line;

System.IO.StreamReader file = new System.IO.StreamReader(@"Test.html");
System.IO.File.WriteAllText("TestOut.txt", string.Empty);

while ((line = file.ReadLine()) != null)
{
    if (line.Contains("<TITLE>") || line.Contains("<H1>"))
    {
        System.Console.WriteLine(line);
        System.IO.File.AppendAllText("TestOut.txt", line + Environment.NewLine);
        counter++;
    }
}

file.Close();
System.Console.WriteLine("{0} lines found.", counter);


Рейтинг:
2

Richard MacCutchan

StreamWriter file2 = new StreamWriter(@"C:\Users\outputfile.txt");

Вам не разрешается создавать файлы в C:\Users-да. Используйте папку в одном из соответствующих местоположений, например Documents, AppData\Local и т. д.


Priya Karthish

Мне нужно, чтобы извлечь содержимое между в <название> в теге и <Н1 и GT; тег. Сначала я подумал, что просто извлеку эти две строки полностью и сохраню их в файле. Только для этого я и написал этот код на c#.
Ошибка: не удалось написать в Streamwriter.
Я сменил каталог и проверил, все та же ошибка идет

Richard MacCutchan

Какой каталог и какая ошибка?