Выберите N-й дочерний узел в HTML-документе

c# html html-agility-pack xpath

Вопрос

У меня есть html-документ, который мне нужен, чтобы захватить все элементы table которые являются пятой таблицей в глубине DOM , чтобы не путать с пятой дочерней table . Моя проблема заключается в 5 table глубинная структура может быть обернута в любом количестве div элементов , так что я не могу использовать абсолютный путь , такие как

/ HTML / тело / стол / TBODY / TR / TD / стол / TBODY / TR / TD / стол / TBODY / TR / TD / стол / TBODY / TR / TD / таблица

Например:

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

Или это:

 <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>

Принятый ответ

Использование :

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

Это выбирает первую table в документе, которая имеет ровно четыре предка с именем table .


Популярные ответы

Я считаю, что вам нужно выражение // между каждым элементом, делая полное выражение:

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

Это выберет любую таблицу с 4 таблицами в любом месте ее пути



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow