Html Agility Pack analysant la table en objet

c# foreach html-agility-pack html-parsing

Question

J'ai donc HTML comme ceci:

<tr class="row1">
        <td class="id">123</td>
        <td class="date">2014-08-08</td>
        <td class="time">12:31:25</td>
        <td class="notes">something here</td>
</tr>
<tr class="row0">
        <td class="id">432</td>
        <td class="date">2015-02-09</td>
        <td class="time">12:22:21</td>
        <td class="notes">something here</td>
</tr>

Et ça continue comme ça pour chaque ligne client. Je veux analyser le contenu de chaque ligne de la table dans un objet. J'ai essayé peu de méthodes mais je n'arrive pas à le faire fonctionner correctement.

C'est ce que j'ai actuellement

<tr class="row1">
        <td class="id">123</td>
        <td class="date">2014-08-08</td>
        <td class="time">12:31:25</td>
        <td class="notes">something here</td>
</tr>
<tr class="row0">
        <td class="id">432</td>
        <td class="date">2015-02-09</td>
        <td class="time">12:22:21</td>
        <td class="notes">something here</td>
</tr>

Cela fonctionne au point d’imprimer les informations de la dernière ligne du tableau sur chaque boucle. Il me manque quelque chose de très simple mais je ne vois pas quoi.

Est-ce que ma façon de créer l'objet convient également ou dois-je utiliser un constructeur et créer l'objet à partir de variables? Par exemple

<tr class="row1">
        <td class="id">123</td>
        <td class="date">2014-08-08</td>
        <td class="time">12:31:25</td>
        <td class="notes">something here</td>
</tr>
<tr class="row0">
        <td class="id">432</td>
        <td class="date">2015-02-09</td>
        <td class="time">12:22:21</td>
        <td class="notes">something here</td>
</tr>

Réponse populaire

Votre requête XPath est incorrecte. Vous devez utiliser td au lieu de //td :

foreach (HtmlNode info in row.SelectNodes("td"))

En passant //td à SelectNodes() correspondra à tous les éléments <td> du document. Votre boucle interne est exécutée 8 fois au lieu de 4 fois. Les 4 dernières fois remplacent toujours les valeurs précédemment définies dans votre objet Customer .

Voir les exemples XPath




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