C # parse html avec xpath

c# html-agility-pack xpath

Question

J'essaie d'analyser les informations boursières avec un simple morceau de C # à partir d'un document HTML. Le problème est que je ne peux pas comprendre la syntaxe, la classe tr class = "LomakeTaustaVari" est analysée, mais comment puis-je obtenir le second bit sans classe tr?

Voici un extrait du code HTML qui se répète avec des valeurs différentes.

<tr class="LomakeTaustaVari">
    <td><div class="Ensimmainen">12:09</div></td>
    <td><div>MSI</div></td>
    <td><div>POH</div></td>
    <td><div>42</div></td>
    <td><div>64,50</div></td>
</tr>
<tr>
    <td><div class="Ensimmainen">12:09</div></td>
    <td><div>SRE</div></td>
    <td><div>POH</div></td>
    <td><div>156</div></td>
    <td><div>64,50</div></td>
</tr>

Mon code C #:

<tr class="LomakeTaustaVari">
    <td><div class="Ensimmainen">12:09</div></td>
    <td><div>MSI</div></td>
    <td><div>POH</div></td>
    <td><div>42</div></td>
    <td><div>64,50</div></td>
</tr>
<tr>
    <td><div class="Ensimmainen">12:09</div></td>
    <td><div>SRE</div></td>
    <td><div>POH</div></td>
    <td><div>156</div></td>
    <td><div>64,50</div></td>
</tr>

Réponse populaire

Essayez d'utiliser le prochain xpath //tr[preceding-sibling::tr[@class='LomakeTaustaVari']] :

var nodes = doc.DocumentNode.SelectNodes("//tr[preceding-sibling::tr[@class='LomakeTaustaVari']]");

Il convient de sélectionner les nœuds ayant le nœud précédent tr avec la classe LomakeTaustaVari .

Juste pour votre information: si aucun noeud n'a été trouvé, la méthode SelectNodes renvoie null .




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