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 回答