C#HtmlAgilityPack HtmlNodeCollection SelectNodes不工作

时间:2015-06-16 16:27:57

标签: c# html xpath html-agility-pack selectnodes

这是我正在使用的代码行,当我在观察窗口中查看时,' 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'到第一个代码片段,它又回到了null。

我知道XPath是正确的,因为我是从我想要获得的元素的Chrome Inspect Element中获取的。

1 个答案:

答案 0 :(得分:2)

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

您认为您的XPATH是可以的,因为您使用了浏览器(Chrome,Firefox等)构建的XPATH,但不幸的是,这个XPATH与您从网络获得的XPATH不完全相同(或者文件或原始流。)

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

所以,我建议你回到你给Html Agility Pack的字符串/流并再次检查XPATH。我打赌没有TBODY,一开始。