检查 <li> 是否存在

Check if <li> is present

我有一个 <ul> <li> 列表,我从中提取数据,但是 <li> 的数字是根据站点动态变化的。

这是我的代码;

HtmlNode dordunculi = doc.DocumentNode.SelectSingleNode("//ul[@class='InfoList']/li[4]/span");

如何在做某事之前检查 /li[4] 是否存在,我知道我需要使用 contains 但无法弄清楚。

谢谢。

在进行进一步处理之前检查是否 SelectSingleNode() returns 值,例如:

HtmlNode dordunculi = doc.DocumentNode.SelectSingleNode("//ul[@class='InfoList']/li[4]/span");
if(dordunculi)
{
    //do something with `dordunculi`
    Console.WriteLine(dordunculi.InnerText);
}

或者,使用 C# 6.0,您可以使用方便的空值传播运算符:

Console.WriteLine(dordunculi?.InnerText);

请注意,XPath 只是 returns 空,以防没有元素匹配整个 XPath。例如,/li[4]/span 只是 returns 空,以防找不到 li[4],没有获得 NRE 的风险。因此,如果您没有特定的意图进行检查但为了避免 NRE,则不必这样做。