我已将网页从网址加载到HtmlDocument
使用var nodes = htmlDocument.DocumentNode.SelectNodes("//li[@class='myLi']");
我可以获得25个节点的Count
。
但是,当我使用:
迭代节点时foreach (HtmlNode htmlNode in nodes)
{
SomeList.Add(htmlNode.SelectSingleNode("//span[@class='user']").InnerText.Trim());
}
我在列表中得到了25个相同的结果
我非常确定foreach
循环应该分别遍历每个节点 - 我哪里出错了?
答案 0 :(得分:2)
告诉HtmlAgilityPack您的XPath范围仅限于当前htmlNode
,您需要在XPath的开头添加一个点/句点(。):
foreach (HtmlNode htmlNode in nodes)
{
SomeList.Add(htmlNode.SelectSingleNode(".//span[@class='user']").InnerText.Trim());
}
否则,HAP将在整个HtmlDocument
内搜索XPath,并在每次迭代中一次又一次地返回第一个匹配的节点,这就是为什么你得到那些相同的结果。< / p>