tabella di analisi del pacchetto agility html

c# html-agility-pack

Domanda

Ho una tabella come questa:

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

e sto usando il pacchetto di agility html per analizzarlo. Ho provato questo codice ma non sta restituendo i risultati previsti: Ecco il codice:

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);
                }
            }

Sto ottenendo ogni colonna perché mi piacerebbe fare un po 'di elaborazione sui contenuti restituiti.

Che cosa sto facendo di sbagliato?

Risposta popolare

Puoi afferrare il contenuto della cella dal tuo ciclo foreach esterno:

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

Inoltre, consiglierei di tagliare e "de-abilitare il testo interno per assicurarti che sia pulito:

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

Nella tua origine le celle di [Età: 78] e [Età: 92] hanno un tag <th> all'inizio invece di <td>



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é