htmlagilitypack utilizando SelectSingleNode

c# html-agility-pack selectsinglenode xpath

Pregunta

He estado tratando de obtener el valor de abajo utilizando HtmlAgilityPack pero sin éxito. Estoy usando SelectSingleNode.

Aquí está mi html.

<html>
<body>
    <table>
        <tr><td>One</td></tr>       
    </table>
</body>
</html>

Y abajo está el código.

HtmlDocument doc = new HtmlDocument();
doc.Load("C:\\test.html");

HtmlNode test = doc.DocumentNode.SelectSingleNode("/html/body/table/tbody/tr/td");
Console.WriteLine(test.InnerHtml);

La variable test (HtmlNode) es nula.

¿Cómo voy a obtener el valor dentro del cual es One ?

Respuesta aceptada

Como se muestra, su muestra no tiene tbody node, por lo que su XPath no devolverá nodos ( null para SelectSingleNode ).

Fijar:

HtmlNode test = doc.DocumentNode.SelectSingleNode("/html/body/table/tr/td");

Consejo de depuración: cree XPath lentamente y verifique cada resultado / nodos secundarios:

     "/html/body/table/" - some children
     "/html/body/table/tbody/"  - null
     "/html/body/table/tr/" - some children
     "/html/body/table/tr/td" - score

Respuesta popular

De usar XPath en SelectSingleNode: recuperar elementos individuales de XML si está presente , necesita usar text() :

var test = doc.DocumentNode.SelectSingleNode("/html/body/table/tr/td/text()");

Además, es necesario eliminar tbody . No hay tbody en tu html.



Related

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é