获取第二个具有相同类的节点

问题描述 投票:0回答:2

我在使用 HtmlAgilityPack 解析某些节点时遇到一些问题。

问题来了:

我有很多带有“test”类的节点,但我想选择第二个。

如果我做这样的事情:

html.DocumentNode.SelectSingleNode ("//font[@class='test' and position()=1]")

它返回我期望的值...但是如果我尝试获取第二个值,它会返回 null...但问题是..为什么?

html.DocumentNode.SelectSingleNode ("//font[@class='test' and position()=2]")

这行代码给我带来了所有这些,我现在真的很困惑,因为使用position()=1 lib必须只返回第一个,对吗?

html.DocumentNode.SelectNodes ("//font[@class='test' and position()=1]")

谢谢大家!

c# html-agility-pack
2个回答
9
投票

正确的代码是

html.DocumentNode.SelectSingleNode ("(//font[@class='test'])[2]")

您使用的代码选择其父元素中的第一个或第二个测试元素,而不是类

font
的所有
test
元素序列中的第一个或第二个元素。


0
投票

尝试此操作,但请确保节点的索引从 [1] 开始,如果溢出,您将返回空值:

string str=htmlSnippet.DocumentNode.SelectSingleNode("//div[@class='lg:mt-4 px-5 lg:px-0 pb-5 styles_PdpProductContent__sectionBorder__39zAX'])[1]");
© www.soinside.com 2019 - 2024. All rights reserved.