0

在找到具有特定标签的 htmlnode 后,我试图获取单个节点。但我得到的是一个错误:

你调用的对象是空的。

现在这里是代码:

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']");

我的目的是获取 XU li 标签内的所有节点。我知道类的名称。

还要注意的是,当我将最后一行代码替换为

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

那么 SelectSingleNode 中的 tag 参数工作正常。

4

2 回答 2

0
HtmlNode someNode = document.SelectSingleNode("//li[@name='XU']").SelectSingleNode("/span[@class='lp']");
于 2013-01-25T02:14:40.203 回答
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']");
    // ...
于 2013-01-18T23:48:47.147 回答