检查 <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,则不必这样做。
我有一个 <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,则不必这样做。