HtmlAgilityPack HasAttribute?

c# html-agility-pack

Pregunta

Todo lo que quiero hacer es

node.Attributes["class"].Value

Pero si el nodo no tiene el atributo de class , se bloquea. Entonces, tengo que verificar su existencia primero, ¿verdad? ¿Cómo puedo hacer eso? Attributes no son un dict (es una lista que contiene un dict interno), y no hay un método HasAttribute (solo un atributo HasAttributes que indica si tiene algún atributo). ¿Qué debo hacer?

Respuesta aceptada

Prueba esto:

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

O puede ser que puedas agregar esto

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

Y luego usar

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

No he probado eso, pero debería funcionar.


Respuesta popular

Por favor intente esto:

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué