2013-01-18 51 views
0

我试图在找到具有特定标记的htmlnode后获取单个节点。 但我得到的回复是一个错误:尝试使用Html Agility Pack获得单个节点

Object reference not set to an instance of an object.

现在,这里是代码:

HtmlWeb htmlWeb = new HtmlWeb(); 
// Creates an HtmlDocument object from an URL 
HtmlAgilityPack.HtmlDocument document = htmlWeb.Load(url); 
// Targets a specific node 
// If there is no node with that Id, someNode will be null 
HtmlNode someNode = document.GetElementbyId("<li name=\"XU\">"); 
var parseString = someNode.SelectSingleNode("//span[@class='lp']"); 

我的目的是让蓄力标签内的所有节点。我知道班级的名字。

也只是需要注意的是,当我用

var parseString = document.DocumentNode.SelectSingleNode("//span[@class='long-position']"); 

将最后一行代码那么的SelectSingleNode内的标签论证工作正常。

+0

'任何advice'上**哪个问题**?如果它正在处理'// span [@ class ='long-position']'然后使用它。 – I4V

+2

如果你需要一个真正的问题答案,你应该发布你的html代码。这样我可以告诉你如何从中获得正确的部分。 –

回答

0

在你的代码...

HtmlNode someNode = document.GetElementbyId("<li name=\"XU\">"); 

...可能返回null ...然后调用:

var parseString = someNode.SelectSingleNode("//span[@class='lp']"); 

...抛出异常,因为someNode为空。

试试这个:

HtmlNode someNode = document.GetElementbyId("XU"); 

if (someNode != null) 
{ 
    var parseString = someNode.SelectSingleNode("/span[@class='lp']"); 
    // ... 
0
HtmlNode someNode = document.SelectSingleNode("//li[@name='XU']").SelectSingleNode("/span[@class='lp']"); 
相关问题