这是我正在使用的代码行,当我查看监视窗口时,'c'为空。
HtmlNodeCollection c = doc.DocumentNode.SelectNodes("//*[@id="content"]/table/tbody/tr[2]/td/center[2]/b");
但是当我将"c"声明为这样时,监视窗口显示它是一个有效的 HtmlNodeCollection
HtmlNodeCollection c = new HtmlNodeCollection(doc.DocumentNode.ParentNode);
如果我然后将"c"设置为第一个代码片段,它将恢复为空。
我知道XPath是正确的,因为我是从我想要获得的元素的Chrome Inspect Element中获得的。
SelectNodes在未找到任何内容时返回null。
你认为你的XPATH是可以的,因为你使用了浏览器(Chrome,Firefox等)构建的XPATH,但不幸的是,这个XPATH与你从网络(或文件或原始流)获得的XPATH并不完全相同。
浏览器依赖于它们内部使用的内存中 DOM,这可能大不相同。这就是为什么你会看到像 TBODY 这样的元素只存在于 DOM 中,而不是在标记中(它们是可选的)。
因此,我建议您回到提供给 Html Agility Pack 的字符串/流,并再次检查该 XPATH。我敢打赌,首先没有TBODY。