У меня есть таблица 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&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
</td>
</tr>
</table>
Иногда результатов будет несколько строк. Я хотел бы иметь возможность просмотреть каждую строку и извлечь имя и адрес электронной почты, а также выполнить некоторую другую обработку. Поместите данные в сетку данных и, возможно, в базу данных.
Думаю, мой вопрос в том, как мне это сделать?
string table = GetContents(buffer);
table = table.Replace(" ", "");
table = table.Replace("&", "&");
XElement inters = XElement.Parse(table);
Я могу поместить его в XElement, но я не совсем уверен, что делать дальше!
Спасибо!






Фактически вы можете использовать таблицу 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();