Cuente nodos secundarios específicos con HtmlAgilityPack

c# html html-agility-pack xpath

Pregunta

Tengo muchos problemas con esta selección de XPath que uso en HtmlAgilityPack.

Quiero seleccionar todos los elementos li (si existen) anidados en otro li que tenga a etiqueta con id="menuItem2" . Esta es una muestra html:

<div id="menu">
  <ul>
    <li><a id="menuItem1"></a></li>
    <li><a id="menuItem2"></a>
       <ul>
          <li><a id="menuSubItem1"></a></li>
          <li><a id="menuSubItem2"></a></li>
       </ul>
    </li>  
    <li><a id="menuItem3"></a></li>
  </ul>
</div>

esto es XPath que he estado usando. Cuando pierdo esta parte /ul/li , se me pone la a etiqueta que quería, pero necesito sus descendientes ... Este XPath siempre devuelve un valor nulo.

string xpathExp = "//a[@id='" + parentIdHtml + "']/ul/li";
HtmlNodeCollection liNodes = htmlDoc.DocumentNode.SelectNodes(xpathExp);

Respuesta popular

La siguiente XPath debería funcionar.

string xpathExp = "//li/a[@id='" + parentIdHtml + "']/following-sibling::ul/li";


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow