Как заставить LINQ to XML и HTML работать вместе?

У меня есть таблица html

  <table border = "0" width = "100%">
        <tr class = "headerbg">
            <th width = "5%">
                No
            </th>
            <th width = "30%">
                Name
            </th>
            <th width = "20%">
                Department or Division
            </th>
            <th width = "25%">
                Email
            </th>
            <th width = "20%">
                Staff/Student
            </th>
        </tr>
        <tr class = "bg2">
            <td>
                1
            </td>
            <td>
                <strong><a class = "searchLink2" href = "tel_search.php?fore=Dave&amp;sur=Rumber">Dave Rumber</a></strong>
            </td>
            <td>
                Medical School
            </td>
            <td>
                <a class = "searchLink2" href = "mailto:[email protected]">[email protected]</a>
            </td>
            <td>
                Student&nbsp;
            </td>
        </tr>
    </table>

Иногда результатов будет несколько строк. Я хотел бы иметь возможность просмотреть каждую строку и извлечь имя и адрес электронной почты, а также выполнить некоторую другую обработку. Поместите данные в сетку данных и, возможно, в базу данных.

Думаю, мой вопрос в том, как мне это сделать?

  string table = GetContents(buffer);

  table = table.Replace("&nbsp;", "");
  table = table.Replace("&", "&amp;");

  XElement inters = XElement.Parse(table);

Я могу поместить его в XElement, но я не совсем уверен, что делать дальше!

Спасибо!

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
1 129
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Фактически вы можете использовать таблицу HTML в качестве источника данных для OLE DB:

http://connectionstrings.com/html-table

Полное раскрытие информации: я на самом деле не пробовал это, но я предполагаю, что это будет намного проще, чем пытаться разобрать XML из HTML.

Ответ принят как подходящий

Вот небольшой код от руки, который должен вам помочь. Не делайте этого на производстве, это только учебная демонстрация.

List<XElement> rows = inters
  .Descendants
  .Where(x => x.Name == "tr")
  .Skip(1) //header
  .ToList();
//
// and now to turn rows into people
List<Person> people = rows
  //filter to anchor.  should be two.
  .Select(r => r.Descendants.Where(a => a.Name = "a"))
  //Project each anchor pair into a Person
  .Select(g => new Person()
  {
    Name = g.First().Value,
    Email = g.Skip(1).First().Value
  })
  .ToList();

Другие вопросы по теме