loops - 使用HtmlAgilityPack选择SelectedNodes中的每个节点

标签 loops xpath iteration html-agility-pack

我已将网页从URL加载到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循环应该分别遍历每个节点-我在哪里出错?

最佳答案

要告诉HtmlAgilityPack您的XPath范围限于当前htmlNode,您需要在XPath的开头添加一个点/句点(。):

foreach (HtmlNode htmlNode in nodes)
{
    SomeList.Add(htmlNode.SelectSingleNode(".//span[@class='user']").InnerText.Trim());
}


否则,HAP将在整个HtmlDocument中搜索XPath,并在每次迭代中一次又一次返回第一个匹配的节点,这就是为什么您获得相同结果的原因。

关于loops - 使用HtmlAgilityPack选择SelectedNodes中的每个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24711192/

相关文章:

java - 如何测试循环中是否有多个字母

php - 循环内循环达到内存限制

python - 如何在 python pandas 中显示重复的 ID 和重复的数据

python - 为什么我的列表不会遍历每个列表?

c - 这个递归的例子正确吗?

arrays - 在遍历数组时检查某些 "divider elements"是否有规律地间隔?

xslt - 向上一个节点,查看父节点是否等同于 XSLT 中的特定节点

php - 如何获得最深的XML元素

xhtml - xpath 查找没有类和 id 的节点

python - 如何从二维数组中获取字符串值并分配给一维数组?