1

私は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:Dave.Rumber@Home.com">Dave.Rumber@Home.com</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 に入れることはできますが、ここからどこに行けばよいのかよくわかりません!

ありがとう!

4

2 に答える 2

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();
于 2008-12-09T19:46:03.727 に答える
1

HTML テーブルを OLE DB のデータ ソースとして実際に使用できます。

http://connectionstrings.com/html-table

完全な開示: 私は実際にこれを試したことはありませんが、HTML から XML を解析するよりもはるかに簡単だと思います。

于 2008-12-09T17:46:03.437 に答える