mpe*_*pen 8 c# html-agility-pack
我想做的就是
node.Attributes["class"].Value
Run Code Online (Sandbox Code Playgroud)
但是如果节点没有该class属性,它就会崩溃.所以,我必须首先检查它的存在,对吗?我怎么做?Attributes不是一个字典(它是一个包含内部字典的列表?),并且没有HasAttribute方法(只是一个HasAttributes,它指示它是否具有任何属性).我该怎么办?
Ole*_*hus 16
更新的答案
如果缺少该属性,则使用node.Attributes["class"]?.Value返回null.这将与ValueOrDefault()下面相同.
原始答案
试试这个:
String val;
if(node.Attributes["class"] != null)
{
val = node.Attributes["class"].Value;
}
Run Code Online (Sandbox Code Playgroud)
或者您可以添加此功能
public static class HtmlAgilityExtender
{
public static String ValueOrDefault(this HtmlAttribute attr)
{
return (attr != null) ? attr.Value : String.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用
node.Attributes["class"].ValueOrDefault();
Run Code Online (Sandbox Code Playgroud)
我没有测试过那个,但它应该可行.