var*_*dos 3 c# html-agility-pack
<li class="sn-g">
<span class="num">1</span>
<span class="sym_first">
<a class="icon> </a>
</span>
<span class="def">...text</span>
</li>
Run Code Online (Sandbox Code Playgroud)
我的 HTML 页面包含这样的子类。然而,sym_first班级并不总是存在。使用 HTMLAgility 我想查找sym_first网页中是否存在类。如果存在,我想从课堂上获取 InnerText def。
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
}
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用SelectSingleNode()并检查返回值是否不是null:
if(doc.DocumentNode.SelectSingleNode("//span[@class='sym_first']") != null)
{
//get inner text
}
Run Code Online (Sandbox Code Playgroud)
或者如果您想检查sym_first当前中的类(假设您在有问题的代码片段中li循环):li
if(node.SelectSingleNode("span[@class='sym_first']") != null)
{
//get inner text
}
Run Code Online (Sandbox Code Playgroud)
更新 :
针对下面评论中报告的错误,尝试检查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
}
Run Code Online (Sandbox Code Playgroud)
根据要求,您可能只想迭代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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3824 次 |
| 最近记录: |