HtmlAgilityPack HasAttribute?

c# html-agility-pack

我想做的就是

node.Attributes["class"].Value

但是如果节点没有class属性,它就会崩溃。所以,我必须首先检查它的存在,对吗?我怎么做? Attributes不是dict(它是一个包含内部字典的列表),并且没有HasAttribute方法(只是一个HasAttributes,它指示它是否具有任何属性)。我该怎么办?

一般承认的答案

尝试这个:

String val;
if(node.Attributes["class"] != null)
{
  val = node.Attributes["class"].Value;
}

或者您可以添加此功能

public static class HtmlAgilityExtender
{
    public static String ValueOrDefault(this HtmlAttribute attr)
    {
        return (attr != null) ? attr.Value : String.Empty;
    }
}

然后使用

node.Attributes["class"].ValueOrDefault();

我还没有测试过那个,但它应该可行。


热门答案

请试试这个:

String abc = String.Empty;     
      if (tag.Attributes.Contains(@"type"))
      {
          abc = tag.Attributes[@"type"].Value;
      }


Related

许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因