Парсинг HTML без использования сторонних библиотек - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток всем кто читает сеё сообщение %) Прошу помочь кодом, советами, примером, мыслями и т.д. в распарсивании html файла только средствами С#. Всем заранее огромное спасибо.

Задача:

необходимо без помощи сторонних библиотек используя возможности только c# распарсить Html файл находящийся на локальном диске (файл создаётся сторонней программой) и выяснить есть ли в данном файле среди ничем не примечательных таблиц одна определённая и если есть то из определённой ячейки забрать нужные данные.

Вводные данные:

сторонняя программа формирует свои выходные данные в html формате при этом все данные идут в куче таблиц которые не имеют ни каких отличительных друг от друга признаков. Таблица как может существовать так и нет. Ниже приведена нужная нам таблица
Листинг программы
  1. ....
  2. <TABLE width="100%">
  3. <TBODY>
  4. <TR>
  5. <TD width="50%">Наименование ОППЗЛ</TD>
  6. <TD width="50%">МЕЧЕЛ-ФОНД ОППЗЛ</TD></TR>
  7. <TR>
  8. <TD width="100%" colSpan=2 align=middle>Системный номер документа
  9. Заявление ответственного лица</TD></TR>
  10. <TR>
  11. <TD width="100%" colSpan=2 align=middle>052013 &nbsp; 20060011350 ( 044 )
  12. 01</TD></TR>
  13. <TR>
  14. <TD width="50%">№ заявления 052T007-0000845</TD>
  15. <TD width="50%">от 26.10.2006</TD></TR></TBODY></TABLE>
  16. ...
При наличии такой таблицы необходимо забрать данные из:
Листинг программы
  1. <TD width="50%">МЕЧЕЛ-ФОНД ОППЗЛ</TD></TR>
данные в этой строке всегда уникальные

Что сделано:

пошёл в таком ключе (набросок)
Листинг программы
  1. using (OpenFileDialog ofdOpen = new OpenFileDialog() { Filter = "Хтмл|*.htm" })
  2. {
  3. if (ofdOpen.ShowDialog() != DialogResult.OK)
  4. return;
  5. StreamReader myStreamReader = new StreamReader(ofdOpen.FileName, Encoding.Default);
  6. string html = myStreamReader.ReadToEnd();
  7. string Search = "Наименование ОППЗЛ"; // ищу по этой строке она определяет есть таблица или нет
  8. Match match = Regex.Match(html, Search);
  9. MessageBox.Show(match.Groups[0].ToString()); // тут соответственно пустота если нет таблицы или искомая строка если есть
  10. }
Вопрос с определение присутствует ли нужная нам таблица или нет вроде как решается сим способом однако как получить данные из следующей строки (другой ячейки таблицы) я понять не могу, не хватает знаний языка и опыта. (использовать другую среду разработки нельзя как и сторонние библиотеки, кроме того нельзя и грузить в веббраузер... получается что остаётся только как то регулярками мучать ((( )

Решение задачи: «Парсинг HTML без использования сторонних библиотек»

textual
Листинг программы
  1. using System.Text.RegularExpressions;
  2.  
  3. string text = "твой html";
  4. string result = "";
  5. foreach(Match Tag in Regex.Matches(text, @"<TD width=""\d+\%"">(?<text>.*?)</TD>"))
  6.         result += Tag.Groups["text"].Value + "\r\n";

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.385 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут