我有一个<ul> <li>
列表,我可以从中提取数据,但是<li>
的数字是根据站点动态变化的。
这是我的代码;
HtmlNode dordunculi = doc.DocumentNode.SelectSingleNode("//ul[@class='InfoList']/li[4]/span");
在执行某些操作之前,如何检查
/li[4]
是否存在,我知道我需要使用contains
但无法弄清楚。谢谢。
最佳答案
在进行进一步处理之前,请检查SelectSingleNode()
是否返回值,例如:
HtmlNode dordunculi = doc.DocumentNode.SelectSingleNode("//ul[@class='InfoList']/li[4]/span");
if(dordunculi)
{
//do something with `dordunculi`
Console.WriteLine(dordunculi.InnerText);
}
或者,使用C#6.0,您可以使用方便的null传播运算符:
Console.WriteLine(dordunculi?.InnerText);
注意,如果没有元素与整个XPath匹配,XPath只会返回空。例如,在未找到
/li[4]/span
的情况下,li[4]
仅返回空,不存在获取NRE的风险。因此,如果您没有特定意图进行检查但避免使用NRE,则不必这样做。