【问题标题】:Search string, retrieve next line搜索字符串,检索下一行
【发布时间】:2012-05-10 15:07:05
【问题描述】:

我正在阅读一个巨大的 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";

等等

您知道我需要搜索包含"&lt;b&gt;User Name&lt;/b&gt;" 之类的内容的行,然后返回下一行,以便解析出所需的数据。如果您需要更多信息,请告诉我,谢谢!

【问题讨论】:

标签: c# html parsing html-parsing


【解决方案1】:

你应该使用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

【讨论】:

  • 我以前看过这个...但是对于 HTML,我不知道从哪里开始。他们似乎没有提供很多文档。有没有可以使用解析器返回我正在寻找的信息的示例?
  • 我还想指出,获取 HTML 文本有点痛苦,该站点需要特定的凭据。不确定 HTML 敏捷包是否适用于此。
  • 这与 HTML Agility Pack 无关,您必须获取 html 然后将其交给 HTML Agility Pack。而且真的很简单,试试HAP Explorer (htmlagilitypack.codeplex.com/releases/view/…) 你会看到
  • 啊这非常有用。我四处摸索,试图确定使用 HTML Agility Pack 搜索什么。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 2018-10-15
  • 1970-01-01
  • 2019-12-15
相关资源
最近更新 更多