使用XPATH问题的HTML Agility Pack

时间:2014-04-19 16:55:16

标签: c# html xpath html-agility-pack

我使用此代码获取html文档中的所有表格:

var tables = document.DocumentNode.SelectNodes("table[@class='something']");

在每个表中,我有多行和多列。到目前为止我有这样的事情:

HtmlNodeCollection rows = tables[0].SelectNodes(".//TR");
for (int i = 0; i < rows.Count; ++i)
{
    HtmlNodeCollection cols = rows[i].SelectNodes(".//TD");

    for (int j = 0; j < cols.Count; ++j)
    {
        string value = cols[j].InnerText;
    }
}

我需要帮助才能理解XPATH的使用,因为我无法找到在线文档。例如,如果我的html文档是这样的话,我将如何获取内容:

<table class="something">
  <colgroup>...</colgroup>
  <thead>
    <tr>
      <td>...</td>
    </tr>
  </thead>
  <thead>...</thead>
  <tbody>
    <tr>
      <td>...</td>
      <td>...</td>
    </tr>
    <tr>
      <td>...</td>
      <td>...</td>
    </tr>
  </tbody>
</table>

我只想要&#34; td&#34;

的内容

1 个答案:

答案 0 :(得分:1)

使用类“某事物”在td内获取table标记的XPath查询是

var nodes = document.DocumentNode.SelectNodes(@"//table[@class=""something""]//td");

这意味着:

  • //从当前节点中选择与选择匹配的文档中的节点,无论它们在何处
  • //table[@class="something"]选择table个标签,其中class属性等于文档中任何位置的“内容”。
  • //table[@class="something"]//td选择td个标记作为父级,祖父级或大型授权父级table标记