HtmlAgility 检查是否存在具有特定名称的子类
本文关键字:定名称 子类 检查 是否 存在 HtmlAgility | 更新日期: 2023-09-27 18:24:10
<li class="sn-g">
<span class="num">1</span>
<span class="sym_first">
<a class="icon> </a>
</span>
<span class="def">...text</span>
</li>
我的 HTML 页面包含这样的子类。但是,sym_first
类并非始终存在。使用HTMLAgility,我想找出网页中是否存在sym_first
类。如果它存在,我想从def
类中获取 InnerText。
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//span[@class='" + sng + "']"))
{
//How do I write this block?
if(doc.DocumentNode.SelectNodes("//span[@class='" + symfirst + "']").Contains(xxx)
{
//get inner text
}
}
您可以尝试使用 SelectSingleNode()
并检查返回值是否未null
:
if(doc.DocumentNode.SelectSingleNode("//span[@class='sym_first']") != null)
{
//get inner text
}
或者,如果您打算在当前li
中检查sym_first
类(假设您正在循环访问相关代码片段中的li
(:
if(node.SelectSingleNode("span[@class='sym_first']") != null)
{
//get inner text
}
更新:
为了响应下面评论中报告的错误,请尝试检查def
类是否存在:
var sym_first = node.SelectSingleNode("span[@class='sym_first']");
var def = node.SelectSingleNode("span[@class='def']");
if(sym_first != null && def != null)
{
//get inner text
}
根据要求,您可能只想循环访问首先具有这些特定内容的li
元素:
var query = "//li[@class='sn-g'][span[@class='sym_first'] and span[@class='def']]";
foreach (HtmlNode node in doc.DocumentNode.SelectNodes(query))
{
//get inner text
}