html agility pack tabla de análisis

c# html-agility-pack

Pregunta

Tengo una mesa como esta:

<table border="0" cellpadding="0" cellspacing="0" id="table2">
    <tr>
        <th>Name
        </th>
        <th>Age
        </th>
    </tr>
        <tr>
        <td>Mario
        </td>
        <th>Age: 78
        </td>
    </tr>
            <tr>
        <td>Jane
        </td>
        <td>Age: 67
        </td>
    </tr>
            <tr>
        <td>James
        </td>
        <th>Age: 92
        </td>
    </tr>
</table>

y estoy usando el paquete de agilidad html para analizarlo. He intentado este código pero no está devolviendo los resultados esperados: Aquí está el código:

foreach (HtmlNode tr in doc.DocumentNode.SelectNodes("//table[@id='table2']//tr"))
            {
                //looping on each row, get col1 and col2 of each row
                HtmlNodeCollection tds = tr.SelectNodes("td");
                for (int i = 0; i < tds.Count; i++)
                {
                    Response.Write(tds[i].InnerText);
                }
            }

Recibo cada columna porque me gustaría hacer un procesamiento de los contenidos devueltos.

¿Qué estoy haciendo mal?

Respuesta popular

Puede capturar el contenido de la celda desde su bucle foreach externo:

foreach (HtmlNode td in doc.DocumentNode.SelectNodes("//table[@id='table2']//tr//td"))  
{  
    Response.Write(td.InnerText);   
}  

También recomendaría recortar y desentituar el texto interno para garantizar que esté limpio:

Response.Write(HtmlEntity.DeEntitize(td.InnerText).Trim())

En su fuente, las celdas para [Edad: 78] y [Edad: 92] tienen una etiqueta <th> al comienzo en lugar de <td>



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é