gpt4 book ai didi

c# - Html Agility Pack 循环遍历表格行和列

转载 作者:太空狗 更新时间:2023-10-29 18:32:07 25 4
gpt4 key购买 nike

我有一张这样的 table

<table border="0" cellpadding="0" cellspacing="0" id="table2">
<tr>
<th>Name
</th>
<th>Age
</th>
</tr>
<tr>
<td>Mario
</td>
<th>Age: 78
</td>
</tr>
<tr>
<td>Jane
</td>
<td>Age: 67
</td>
</tr>
<tr>
<td>James
</td>
<th>Age: 92
</td>
</tr>
</table>

并且想用HTML Agility Pack来解析它。我试过这段代码无济于事:

foreach (HtmlNode row in doc.DocumentNode.SelectNodes("//table[@id='table2']//tr"))
{
foreach (HtmlNode col in row.SelectNodes("//td"))
{
Response.Write(col.InnerText);
}
}

我做错了什么?

最佳答案

为什么不直接选择 td 呢?

foreach (HtmlNode col in doc.DocumentNode.SelectNodes("//table[@id='table2']//tr//td"))
Response.Write(col.InnerText);

或者,如果您确实需要单独使用 tr 进行某些其他处理,请删除 // 并执行:

foreach (HtmlNode row in doc.DocumentNode.SelectNodes("//table[@id='table2']//tr"))
foreach (HtmlNode col in row.SelectNodes("td"))
Response.Write(col.InnerText);

当然,这只有在 tdtr 的直接子代时才有效,但它们应该是,对吧?


编辑:

var cols = doc.DocumentNode.SelectNodes("//table[@id='table2']//tr//td");
for (int ii = 0; ii < cols.Count; ii=ii+2)
{
string name = cols[ii].InnerText.Trim();
int age = int.Parse(cols[ii+1].InnerText.Split(' ')[1]);
}

可能有一种更令人印象深刻的方法可以使用 LINQ 完成此操作。

关于c# - Html Agility Pack 循环遍历表格行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14968729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com