Seleccione Nth Nodo hijo en el documento HTML

c# html html-agility-pack xpath

Pregunta

Tengo un documento html que necesito para capturar todos table elementos de la table que están en la quinta tabla en el DOM , para no confundirme con la quinta table secundaria. Mi problema es que esta estructura profunda de 5 table se puede envolver en cualquier número de elementos div , por lo que no puedo usar una ruta absoluta como

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

Por ejemplo:

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

O esto:

 <body> 
    <div> <!--Could be wrapped more than just once though -->  
        <table>    
            <table>
                <table>
                    <table>
                       <!--Grab this one -->
                       <table>
                       </table>
                    </table>
                </table>
           </table>
        </table>
    </div>
</body>

Respuesta aceptada

Uso :

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

Esto selecciona la primera table en el documento que tiene exactamente cuatro ancestros llamados table .


Respuesta popular

Creo que querrías la // expresión entre cada elemento, haciendo la expresión completa:

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

Esto seleccionará cualquier tabla que tenga 4 tablas en cualquier lugar de su ruta.



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é