HtmlAgilityPack HasAttribute?

c# html-agility-pack

Question

Tout ce que je veux faire c'est

node.Attributes["class"].Value

Mais si le nœud ne possède pas l'attribut class , il se bloque. Donc, je dois d'abord vérifier son existence, non? Comment je fais ça? Attributes n'est pas un dict (c'est une liste qui contient un dict interne?), Et il n'y a pas de méthode HasAttribute (juste un HasAttributes qui indique s'il a un attribut). Que fais-je?

Réponse acceptée

Essaye ça:

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

Ou vous pourriez peut-être ajouter ceci

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

Et puis utiliser

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

Je n'ai pas testé celui-là, mais ça devrait marcher.


Réponse populaire

S'il vous plaît essayez ceci:

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi