HtmlAgility comprueba si existe una subclase con un nombre específico

c# html-agility-pack

Pregunta

<li class="sn-g">
     <span class="num">1</span>
     <span class="sym_first">
          <a class="icon>&nbsp;</a>
     </span>
     <span class="def">...text</span>
</li>

Mi página HTML contiene tales subclases. Sin embargo, la clase sym_first no siempre está presente. Usando HTMLAgility, quiero saber si existe la clase sym_first en la página web. Si existe quiero obtener el texto interno de la clase def .

<li class="sn-g">
     <span class="num">1</span>
     <span class="sym_first">
          <a class="icon>&nbsp;</a>
     </span>
     <span class="def">...text</span>
</li>

Respuesta popular

Puede intentar usar SelectSingleNode() y verificar si el valor de retorno no es null :

if(doc.DocumentNode.SelectSingleNode("//span[@class='sym_first']") != null)
{
    //get inner text
}

o si quiere verificar la clase sym_first dentro de li actual (asumiendo que está haciendo un bucle a través de li en el fragmento de código en cuestión):

if(doc.DocumentNode.SelectSingleNode("//span[@class='sym_first']") != null)
{
    //get inner text
}

ACTUALIZACIÓN:

En respuesta al error reportado en el comentario a continuación, intente verificar si también existe la clase def :

if(doc.DocumentNode.SelectSingleNode("//span[@class='sym_first']") != null)
{
    //get inner text
}

Dependiendo de los requisitos, es posible que desee iterar solo a través de elementos li que tienen este contenido específico en primer lugar:

if(doc.DocumentNode.SelectSingleNode("//span[@class='sym_first']") != null)
{
    //get inner text
}



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é