Предположим, у меня есть это (упрощенный):Как выбрать дочерние элементы любой глубины с помощью XPath?
<form id="myform">
<!-- some input fields -->
<input type="submit" value="proceed"/>
</form>
Затем можно выбрать кнопку отправки по XPath //form[@id='myform']/input[@type='submit']
. Отлично.
Тем не менее, мои шаблоны могут измениться, и я хочу быть гибким в глубине, в которой находится кнопка отправки. Это может быть помещен в таблицу, как это:
<form id="myform">
<!-- some input fields -->
<table><tr><td>
<input type="submit" value="proceed"/>
</td></tr></table>
</form>
Я знаю, что я могу выбрать элементы, которые являются внуками, но я не могу выбрать гранд-гранд-гранд -...- childeren любой глубины. Например:
//form[@id='myform']/*/input[@type='submit']
только выбирает детей-детей, дальнейшие глубины.//form[@id='myform']/*/*/input[@type='submit']
только выбирает grand-grand-children, не более или менее глубины.//form[@id='myform']/**/input[@type='submit']
недействителен.
Итак, как я могу выбрать эту кнопку отправки надежно, не используя идентификаторы элементов?
C#, похоже, не понимает эту нотацию. '// form // input' возвращает null в C#, в то время как Chrome может найти 35 входов с использованием того же xpath – Achilles
Мой последний комментарий обсуждается здесь: http://stackoverflow.com/questions/23232671/xpath-selects-in-htmlagilitypack- dont-work-as-expected – Achilles