2008-12-09 3 views
1

У меня есть HTML таблицуКак сделать LINQ to XML и 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> 

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

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

string table = GetContents(buffer); 

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

    XElement inters = XElement.Parse(table); 

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

Спасибо!

ответ

1

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

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(); 
1

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

http://connectionstrings.com/html-table

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