我有一个html文件:
<div class="form-wrapper">
<div></div>
<div class="Clearfix">
<div></div>
<div></div>
<span></span><span class="time">Time</span>
</div>
<div></div>
<div class="Clearfix">
<div></div>
<div></div>
<span></span><span class="time">Time1</span>
</div>
<div></div>
<div class="Clearfix">
<div></div>
<div></div>
<span></span><span class="time">Time2</span>
</div><div></div>
<div class="Clearfix">
<div></div>
<div></div>
<span></span><span class="time">Time3</span>
</div>
我使用下面的c#代码获取所有times
项:
var node_1 = htmlDocument.DocumentNode.SelectNodes("//div[@class='form-wrapper']").First();
var ITEM = node_1.SelectNodes("//div[@class='clearfix']");
for (int Node = 0; Node < ITEM.Count; Node++)
{
Console.WriteLine(ITEM[Node].SelectNodes("//span[@class='time']")[1].InnerText.Trim());
}
Console.ReadKey();
我正在使用First()&#34; Form-wrapper&#34;因为他们很多。
我也尝试过使用它:
foreach (var Node in node_1.SelectNodes("//div[@class='clearfix']"))
{
//
}
问题:你可以看到我有4个Clearfix
类,所以我需要得到结果:
Time
Time1
Time2
Time3
但出于某些原因我只能得到:
Time
Time
Time
Time
答案 0 :(得分:2)
当您查询某个节点时,开头不需要//
,如果您要添加,则查询将在整个文档中执行。
您需要在选择后选择第一个节点,因此您需要获取索引为0
的节点而不是1
这2点可以解决您的问题,但您可以做一些改进
SelecNodes().First()
SelectSingleNode()
htmlDocument.SelectNodes("\\span[@class='time']")
将完成所有工作