Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用HTMLAgilityPack Library.NET检索具有相同“Class”名称的多个“td”值_Html_.net_Winforms_Html Agility Pack - Fatal编程技术网

使用HTMLAgilityPack Library.NET检索具有相同“Class”名称的多个“td”值

使用HTMLAgilityPack Library.NET检索具有相同“Class”名称的多个“td”值,html,.net,winforms,html-agility-pack,Html,.net,Winforms,Html Agility Pack,我刚刚再次使用了HTMLAgilityPack,我真的不知道为什么我的代码会以这种方式执行。所以我有这个HTML代码。这只是一个实验性的HTML代码,以使实验更容易 <html> <tbody class="person"> <div class="name">Chris</div> <td class="num">3,200</td> <td class="num">62,000</td> <

我刚刚再次使用了HTMLAgilityPack,我真的不知道为什么我的代码会以这种方式执行。所以我有这个HTML代码。这只是一个实验性的HTML代码,以使实验更容易

<html>
<tbody class="person">
<div class="name">Chris</div>
<td class="num">3,200</td>
<td class="num">62,000</td>
<td class="num">59,700</td>
<td class="num">1,500</td>
</tbody>

<tbody class="person">
<div class="name">John</div>
<td class="num">23,200</td>
<td class="num">900</td>
<td class="num">60,100</td>
<td class="num">1,300</td>
</tbody>

<tbody class="person">
<div class="name">James</div>
<td class="num">900</td>
<td class="num">60</td>
<td class="num">61,400</td>
<td class="num">610</td>
</tbody>
</html>
我真的很困惑为什么它只返回第一个数值。数值与
不对应

据我所知,对于它执行的每个循环,它都会在每个
下获得相应的数据。如何获取与
对应的下一个数值。非常感谢。

这里是错误:

'select the first <tbody class="person"> element'
Dim numberNode = tbody.SelectSingleNode("//tbody[contains(@class, 'person')]")
'then get all <td class='num'> within above <tbody>'
Dim valueNode = numberNode.SelectNodes(".//td[contains(@class, 'num')]")
“选择第一个元素”
Dim numberNode=tbody.SelectSingleNode(//tbody[contains(@class,'person')]))
“那就让一切都在上面”
Dim valueNode=numberNode.SelectNodes(“.//td[contains(@class,'num')]”)
尝试将其更改为以下内容:

'get all <td class='num'> within <tbody> of current iteration'
Dim valueNode = tbody.SelectNodes(".//td[contains(@class, 'num')]")
“获取当前迭代中的所有内容”
Dim valueNode=tbody.SelectNodes(“.//td[contains(@class,'num')]”)

我不会说那是丑陋的HTML,不知道你对它有多大的控制权
div
不应该是
tbody
的直接子代,也不应该是
td
因此,他们应该是
tr
的子代。哦,我还开玩笑地注意到完全没有
标记。@Jon P,这不是我将要使用的真正的html代码。是的,它很难看,但它仍然是有效的html。我刚刚创建了这个快速的代码来缩短代码以进行实验。然而,这是我将要删除的原始专业网站html的格式。我只是按照格式。谢谢你的评论。天哪,它真管用!现在我明白了。多谢各位。我很感激。向上投票并标记您的答案:)
'get all <td class='num'> within <tbody> of current iteration'
Dim valueNode = tbody.SelectNodes(".//td[contains(@class, 'num')]")