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合法嗎? 是的,了解原因