C# 使用XPATH问题的HTML敏捷包

C# 使用XPATH问题的HTML敏捷包,c#,html,xpath,html-agility-pack,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) { HtmlNodeCollecti

我正在使用以下代码获取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;
    }
}
HtmlNodeCollection行=表[0]。选择节点(“.//TR”);
对于(int i=0;i
我需要帮助理解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>

...
...
...
...
...
...
...

我只想知道XPath查询“td”的内容是什么,以获得
td
标记,这些标记位于
表中,类为“something”

这意味着:

  • /
    从当前节点中选择与所选内容匹配的文档中的节点,无论它们位于何处
  • //table[@class=“something”]
    选择
    table
    标记,其属性
    class
    等于文档中任何位置的“something”
  • //table[@class=“something”]//td
    选择
    td
    标记,这些标记作为父项、父项或总授予父项都有
    table
    标记

“请帮助我找到示例”在SO上是离题的。(如果我误解了你的问题,考虑编辑它,让它清楚你在寻找什么/期待什么)。此搜索可以让您开始-。如果您喜欢详细信息,请参阅。您通常会发现XPath示例应用于XML中的搜索-它们直接应用于您的案例,因为它本质上就是HtmlAgilityPack所做的-将“自由格式HTML”转换为XML树。因此,如果使用//table//tbody//td,它会在tbody?中获取所有td标记,并使用指定的HTML,是的。您还可以使用
//table/tbody//td
,因为
tbody
table
的直接后代。注意,在
thead
中,您应该使用
th
而不是
td
。如果这样做,建议的XPath查询将在不指定
tbody
var nodes = document.DocumentNode.SelectNodes(@"//table[@class=""something""]//td");