HtmlAgilityPack HasAttribute?

c# html-agility-pack

Вопрос

Все, что я хочу сделать, это

node.Attributes["class"].Value

Но если узел не имеет атрибута class , он сработает. Итак, сначала я должен проверить его существование, не так ли? Как мне это сделать? Attributes не являются dict (его список, который содержит внутренний 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
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему