1

そこから抽出する必要がある情報を含む巨大な HTML 文字列を読み込んでいます。検索パラメーター (解析する場所) を設定できますが、一時ファイルに保存せずにこれを達成するにはどうすればよいStreamReaderですか?

例:

//Pertinent data starts here:
<!--
   body for the page starts here
-->

    <table border="0" >
      <tr>
        <td class='HeaderTD'><b>User Name</b></td>
        <td class='HeaderTD'><b>Mark TheMan</b></td>
      </tr>
      <tr>
        <td class='DataTD_Black_Bold '>Department</td>
        <td class='DataTD'>Programming</td>
      </tr>
      <tr>
        <td class='DataTD_Black_Bold '>Office Phone</td>
        <td class='DataTD'>555-555-5555</td>
      </tr>
      <tr>
        <td class='DataTD_Black_Bold '>Office Ext</td>
        <td class='DataTD'>x5555</td>

クラスのいくつかの属性をさまざまなフィールド (文字列) に設定するだけです。

User.UserName = "Mark TheMan";
User.Department = "Programming";
User.OfficePhone = "555-555-5555";

"<b>User Name</b>"目的のデータを解析できるように、次のような行を検索して次の行を返す必要があることがわかります。さらに情報が必要な場合はお知らせください。ありがとうございます。

4

1 に答える 1

3

Html パーサーを使用する必要があります。HtmlAgilityPackは非常に優れています。

テーブルからデータを簡単に取得できることを示す小さなコンソール アプリケーションを次に示します。

static void Main(string[] args)
{
  HtmlDocument doc = new HtmlDocument();
  doc.Load("example.html");
  foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table"))
  {
    foreach (HtmlNode row in table.SelectNodes("tr"))
    {
      foreach (HtmlNode cell in row.SelectNodes("th|td"))
      {
        Console.WriteLine("Cell value : " + cell.InnerText);
      }
    }
  }
}

そして、あなたの例の出力は次のようになります:

Cell value : User Name
Cell value : Mark TheMan
Cell value : Department
Cell value : Programming
Cell value : Office Phone
Cell value : 555-555-5555
于 2012-04-30T23:20:11.440 に答える