Obtenir une valeur d'un document HTML

c# document html html-agility-pack nodes

Question

Puis-je avoir de l'aide pour obtenir une valeur d'un document HTML?

Voici le contenu du document:

<html>
  <head>
    <style>body, table, input, select, textarea, button {   font: normal 1em Verdana, Sans-Serif; } body {  font-size: 0.8em; } a { color:#336600; } b { color:#003300; }.header {font-family: verdana; font-size: 15px; color:#003300; font-weight:bold;}.back {background-color:#DBF0DB;}.back2 {background-color:#009933;}            
    </style>
  </head>
  <body>
    <table border="0" cellpadding="3" cellspacing="1" width="100%">
      <tr>
        <td colspan="2" class="header">#827216</td>
      </tr>
    </table>
<body>
</html> 

Je veux récupérer la valeur # 827216.

Voici le code avec lequel je travaille, qui ne fonctionne pas correctement:

hdoc.LoadHtml(FileContents);

var xID = hdoc.DocumentNode.SelectNodes("/html/body/table/tr/");

Et voici l'erreur:

L'expression doit évaluer un ensemble de nœuds

Réponse acceptée

Cela obtiendra le contenu indépendamment de votre code HTML mal formé:

HtmlNodeCollection tables = hdoc.DocumentNode.SelectNodes("//table[1]");
HtmlNodeCollection cells = tables[0].SelectNodes("//tr/td");
var cellText = cell[0].InnerHtml;

Vous devez cependant corriger votre code HTML, fermez la <body> .


Réponse populaire

Votre code HTML n'est pas valide XML. La balise body n'est pas fermée. De plus, votre expression XPath doit être /html/body/table/tr/td pour accéder à l'élément td . De plus, pour obtenir un élément, vous devez utiliser selectSingleNode



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi