htmlagilitypack utilisant SelectSingleNode

c# html-agility-pack selectsinglenode xpath

Question

J'ai essayé d'obtenir la valeur ci-dessous en utilisant HtmlAgilityPack mais sans succès. J'utilise SelectSingleNode.

Voici mon HTML.

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

Et ci-dessous est le codebehind.

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) est null.

Comment vais-je obtenir la valeur à l'intérieur de laquelle est One .

Réponse acceptée

Comme indiqué, votre exemple n'a pas de noeud tbody , votre XPath ne renverra donc aucun noeud ( null pour SelectSingleNode ).

Réparer:

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

Conseil de débogage: construisez XPath lentement et vérifiez chaque nœud résultat / enfant:

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

Réponse populaire

Depuis XPath dans SelectSingleNode: Récupération d'un élément individuel à partir de XML s'il est présent, vous devez utiliser text()

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

En outre, vous devez supprimer tbody . Il n'y a pas de tbody dans votre tbody HTML.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow