Comment obtenir la valeur d'une cellule spécifique C # Html-Agility-Pack

c# html-agility-pack html-parsing

Question

Comment puis-je obtenir une valeur à partir d'un emplacement spécifique dans la deuxième table du document. J'ai besoin de la valeur de la deuxième cellule et de la troisième colonne dans le document html ci-dessous. Comment puis-je faire cela.

<html>
<head>
<title>Tables</title>
</head>
<body>
<table border="1">
  <tr>
    <th>Room</th>
    <th>Location</th>
  </tr>
  <tr>
    <td>Paint</td>
    <td>A4</td>
  </tr>
  <tr>
    <td>Stock</td>
    <td>B3</td>
  </tr>
  <tr>
    <td>Assy</td>
    <td>N9</td>
  </tr>
</table>
<p></p>
<table border="1">
  <tr>
    <th>Product</th>
    <th>Mat'l</th>
    <th>Weight</th>
    <th>Size</th>
  </tr>
  <tr>
    <td>Cover</td>
    <td>Plastic</td>
    <td>4</td>
    <td>16</td>
  </tr>
  <tr>
    <td>Retainer</td>
    <td>Steel</td>
    <td>12</td>
    <td>8</td>
  </tr>
  <tr>
    <td>Pin</td>
    <td>Bronze</td>
    <td>18</td>
    <td>7</td>
  </tr>
</table>
<p></p>
<table border="1">
  <tr>
    <th>Process</th>
    <th>Location</th>
    <th>Number</th>
  </tr>
  <tr>
    <td>Trim</td>
    <td>S2</td>
    <td>8</td>
  </tr>
  <tr>
    <td>Finish</td>
    <td>D2</td>
    <td>3</td>
  </tr>
</table>
</body>
</html>

Merci!

Aussi ... S'il vous plaît aider un débutant dehors !!! Veuillez me diriger vers une ressource qui peut m'aider à comprendre la syntaxe de Html-Agility-Pack (HAP). J'ai le fichier CHM pour HAP. J'ai essayé de l'utiliser et d'utiliser le navigateur d'objet de VS pour HAP, mais c'est trop crypté pour moi pour le moment.

Réponse acceptée

Html Agility Pack est équipé d'un évaluateur XPATH qui suit la syntaxe .NET XPATH sur les nœuds HTML analysés. Notez que l'expression XPATH utilisée avec cette bibliothèque nécessite des éléments et des noms d'attributs en minuscules, indépendamment de la source HTML d'origine.

Donc, dans votre cas, vous pouvez obtenir la cellule de la 3ème colonne, 2ème rangée, 2ème table avec une expression comme celle-ci:

HtmlDocument doc = new HtmlDocument();
doc.Load(YouTestHtmlFilePath);

HtmlNode node = doc.DocumentNode.SelectSingleNode("//table[2]/tr[2]/td[3]");
Console.WriteLine(node.InnerText); // will output "4"

//table signifie obtenir n'importe quel élément TABLE de manière récursive à partir de la racine. [2] signifie prendre la 2e table.

/tr signifie obtenir n'importe quel élément TR de cette table actuelle. [2] signifie prendre la 2e rangée.

/td signifie obtenir n'importe quel élément TD de cette ligne actuelle. [3] signifie prendre la 3ème cellule.

Vous pouvez trouver de bons tutoriels XPATH ici: XPath Tutorial




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