Come ottenere il valore da una cella specifica C # Html-Agility-Pack

c# html-agility-pack html-parsing

Domanda

Come ottengo un valore da una posizione specifica nella seconda tabella del documento. Ho bisogno del valore dalla seconda cella giù e dalla terza colonna sopra nel documento html qui sotto. Come faccio a fare questo.

<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>

Grazie!

Inoltre ... Si prega di aiutare un principiante fuori !!! Per favore indirizzami a una risorsa che possa aiutarmi a capire la sintassi di Html-Agility-Pack (HAP). Ho il file CHM per HAP - Ho provato ad usarlo e ho provato ad usare il browser degli oggetti VS per HAP, ma a questo punto è troppo criptico per me.

Risposta accettata

Html Agility Pack è dotato di un valutatore XPATH che segue la sintassi .NET XPATH sui nodi HTML analizzati. Nota l'espressione XPATH utilizzata con questa libreria richiede che gli elementi e i nomi degli attributi siano in minuscolo, indipendentemente dall'origine HTML originale.

Quindi nel tuo caso, puoi ottenere la cella per la 3a colonna, 2a riga, 2a tabella con un'espressione come questa:

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 significa ottenere qualsiasi elemento TABLE in modo ricorsivo da root. [2] significa prendere il 2 ° tavolo.

/tr significa ottenere qualsiasi elemento TR da questa tabella corrente. [2] significa prendere la seconda fila.

/td significa ottenere qualsiasi elemento TD da questa riga corrente. [3] significa prendere la 3 ° cella.

Puoi trovare tutorial XPATH validi qui: XPath Tutorial




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché