0

这是我正在使用的代码行,当我查看监视窗口时,'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 中获得的。

4

1 回答 1

2

当没有找到任何内容时,SelectNodes 返回 null。

您认为您的 XPATH 没问题,因为您使用了浏览器(Chrome、Firefox 等)构建的 XPATH,但不幸的是,此 XPATH 与您从网络(或文件或原始流)获得的 XPATH 并不完全相同.

浏览器依赖于它们在内部使用的内存中 DOM,这可能会有很大的不同。这就是为什么您会看到诸如 TBODY 之类的元素仅存在于 DOM 中,而不存在于标记中(它们是可选的)。

因此,我建议您返回给 Html Agility Pack 的字符串/流,并再次检查 XPATH。我敢打赌,首先没有 TBODY。

于 2015-06-16T16:35:45.633 回答