The*_*kZn 1 iteration xpath loops html-agility-pack
我已将网页从 URL 加载到HtmlDocument
使用var nodes = htmlDocument.DocumentNode.SelectNodes("//li[@class='myLi']");
我可以获得Count
25 个节点。
但是,当我使用以下命令迭代节点时:
foreach (HtmlNode htmlNode in nodes)
{
SomeList.Add(htmlNode.SelectSingleNode("//span[@class='user']").InnerText.Trim());
}
Run Code Online (Sandbox Code Playgroud)
我在列表中得到 25 个相同的结果。
我很确定foreach
循环应该单独迭代每个节点 - 我哪里出错了?
要告诉 HtmlAgilityPack 您的 XPath 范围仅限于当前,htmlNode
您需要在 XPath 的开头添加一个点/句点 (.):
foreach (HtmlNode htmlNode in nodes)
{
SomeList.Add(htmlNode.SelectSingleNode(".//span[@class='user']").InnerText.Trim());
}
Run Code Online (Sandbox Code Playgroud)
否则,HAP 将在整个 XPath 中搜索HtmlDocument
并在每次迭代中一次又一次地返回第一个匹配的节点,这就是为什么您会得到相同的结果。