Wählen Sie N-ten untergeordneten Knoten in HTML-Dokument

c# html html-agility-pack xpath

Frage

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>    
    <table>    
        <table>
            <table>
                <table>
                   <!--Grab this one -->
                   <table>
                   </table>
                </table>
            </table>
       </table>
    </table>
</body>

Akzeptierte Antwort

Verwenden :

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

Dadurch wird die erste table im Dokument ausgewählt, die genau vier Vorfahren mit dem Namen table .


Beliebte Antwort

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




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum