Sélectionnez le nième enfant dans le document HTML

c# html html-agility-pack xpath

Question

J'ai un document HTML que je dois saisir tous table éléments de la table qui sont la 5ème table au fond du DOM , pour ne pas être confondu avec la 5ème table enfant. Mon problème est que cette structure profonde de 5 table peut être encapsulée dans un nombre quelconque d’éléments div , je ne peux donc pas utiliser un chemin absolu tel que

/ html / body / table / tbody / tr / td / table / tbody / tr / td / table / tbody / tr / td / table / tbody / tr / td / table

Par exemple:

<body>    
    <table>    
        <table>
            <table>
                <table>
                   <!--Grab this one -->
                   <table>
                   </table>
                </table>
            </table>
       </table>
    </table>
</body>

Ou ca:

<body>    
    <table>    
        <table>
            <table>
                <table>
                   <!--Grab this one -->
                   <table>
                   </table>
                </table>
            </table>
       </table>
    </table>
</body>

Réponse acceptée

Utiliser :

(//table[count(ancestor::table) = 4])[1]

Ceci sélectionne la première table du document qui a exactement quatre ancêtres nommés table .


Réponse populaire

Je crois que vous voudriez que la // expression entre chaque élément donne la pleine expression:

//table//table//table//table//table

Ceci sélectionnera n'importe quelle table ayant 4 tables n'importe où dans son chemin




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