我在使用 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]")
谢谢大家!
正确的代码是
html.DocumentNode.SelectSingleNode ("(//font[@class='test'])[2]")
您使用的代码选择其父元素中的第一个或第二个测试元素,而不是类
font
的所有 test
元素序列中的第一个或第二个元素。
尝试此操作,但请确保节点的索引从 [1] 开始,如果溢出,您将返回空值:
string str=htmlSnippet.DocumentNode.SelectSingleNode("//div[@class='lg:mt-4 px-5 lg:px-0 pb-5 styles_PdpProductContent__sectionBorder__39zAX'])[1]");