Cómo obtener el valor de una celda específica C # Html-Agility-Pack

c# html-agility-pack html-parsing

Pregunta

¿Cómo obtengo un valor de una ubicación específica en la segunda tabla del documento? Necesito el valor de la segunda celda hacia abajo y la tercera columna en el documento html a continuación. Cómo hago esto.

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

¡Gracias!

También ... ¡Por favor ayuda a un novato! Por favor, diríjame a un recurso que pueda ayudarme a entender la sintaxis de Html-Agility-Pack (HAP). Tengo el archivo CHM para HAP. He intentado usarlo y he intentado usar el buscador de objetos de VS para HAP, pero en este momento es demasiado críptico para mí.

Respuesta aceptada

Html Agility Pack está equipado con un evaluador XPATH que sigue la sintaxis de .NET XPATH sobre los nodos HTML analizados. Tenga en cuenta que la expresión XPATH utilizada con esta biblioteca requiere que los elementos y los nombres de los atributos estén en minúsculas, independientemente de la fuente HTML original.

Entonces, en su caso, puede obtener la celda para la tercera columna, la segunda fila, la segunda tabla con una expresión como esta:

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 obtener cualquier elemento TABLE recursivamente desde la raíz. [2] significa tomar la segunda mesa.

/tr significa obtener cualquier elemento TR de esta tabla actual. [2] significa tomar la segunda fila.

/td significa obtener cualquier elemento TD de esta fila actual. [3] significa tomar la 3ª celda.

Puedes encontrar buenos tutoriales de XPATH aquí: Tutorial de XPath



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é