C# 使用XPATH问题的HTML敏捷包
我正在使用以下代码获取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
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");