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

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

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

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

Задача:

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

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

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

Что сделано:

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

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

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

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


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

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

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