【问题标题】:Check if <li> is present检查 <li> 是否存在
【发布时间】:2016-05-09 00:07:10
【问题描述】:

我有一个 &lt;ul&gt; &lt;li&gt; 列表,我从中提取数据,但 &lt;li&gt; 的数字是基于站点动态的。

这是我的代码;

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

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

谢谢。

【问题讨论】:

    标签: c# xpath html-agility-pack


    【解决方案1】:

    在进一步处理之前检查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,您可以使用方便的空传播运算符:

    Console.WriteLine(dordunculi?.InnerText);
    

    请注意,如果没有元素与整个 XPath 匹配,XPath 只会返回空。例如,/li[4]/span 仅在未找到 li[4] 的情况下返回空,没有获得 NRE 的风险。因此,如果您没有特定意图进行检查但为了避免 NRE,则不必这样做。

    【讨论】:

    • 感谢@har07 没有测试它,因为它找不到它会给出错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2011-08-04
    • 2019-09-12
    • 2012-08-06
    • 2022-11-22
    • 2015-10-18
    • 2018-09-10
    相关资源
    最近更新 更多