试图获得一个单一的节点与Html敏捷包

本文关键字:节点 Html 单一 一个 | 更新日期: 2023-09-27 17:54:15

在我找到具有特定标记的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中的标记参数工作正常

试图获得一个单一的节点与Html敏捷包

在你的代码中…

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

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

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

…抛出异常,因为someenode为空。

试试这个:

HtmlNode someNode = document.GetElementbyId("XU");
if (someNode != null)
{
    var parseString = someNode.SelectSingleNode("/span[@class='lp']");
    // ...

HtmlNode someNode = document.SelectSingleNode("//li[@name='XU']").SelectSingleNode("/span[@class='lp']");