检查<li>是否存在

时间:2016-05-09 00:07:11

标签: c# xpath html-agility-pack

我有一个<ul> <li>列表即可从中提取数据,但<li>的数字是基于网站的动态数据。

这是我的代码;

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

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

谢谢。

1 个答案:

答案 0 :(得分:2)

在进行进一步处理之前,检查newVector.reserve(dist); merge(tmp1.begin(), mid1, mid2, tmp2.end(), std::back_inserter(newVector)); 是否返回值,例如:

SelectSingleNode()

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

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

请注意,如果没有元素与整个XPath匹配,XPath只返回空。例如,Console.WriteLine(dordunculi?.InnerText); 只是在找不到/li[4]/span的情况下返回空,没有获得NRE的风险。因此,如果您没有特定的意图进行检查但是为了避免NRE,那么您不必这样做。