Ich habe ein HTML - Dokument , das ich brauche alle greifen table
Elemente , die die fünfte Tabelle tief im sind DOM
, nicht mit dem fünften Kind verwechselt werden table
. Mein Problem ist, dass diese 5 table
tiefe Struktur könnte in eine beliebige Anzahl von div
Elemente gewickelt werden, so dass ich nicht einen absoluten Pfad wie verwenden kann
/ html / body / table / tbody / tr / td / table / tbody / tr / td / table / tbody / tr / td / table / tbody / tr / td / table
Beispielsweise:
<body>
<table>
<table>
<table>
<table>
<!--Grab this one -->
<table>
</table>
</table>
</table>
</table>
</table>
</body>
Oder dieses:
<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>
Verwenden :
(//table[count(ancestor::table) = 4])[1]
Dadurch wird die erste table
im Dokument ausgewählt, die genau vier Vorfahren mit dem Namen table
.
Ich glaube, du würdest den Ausdruck //
zwischen jedem Element haben wollen, um den vollen Ausdruck zu erhalten:
//table//table//table//table//table
Dies wird jede Tabelle auswählen, die 4 Tabellen irgendwo in ihrem Pfad hat