У меня есть HTML файл выглядит следующим образом:XPath для всех дочерних элементов до определенного брата?
<r>
<ab id = "1">
<event/>
<li>a</li>
<li>b</li>
<action/>
<li>a2</li>
<li>b2</li>
<action/>
</ab>
<ab id = "2">
<event/>
<li>a3</li>
<li>b3</li>
<action/>
</ab>
</r>
То, что я хотел бы сделать, это сначала найти все узел событий в HTML файл, а затем для каждого узла событий найти все следующие одноуровневые узлы, пока он не встречает узел действий , Таким образом, для первого узла события, результат должен быть
<li>a</li>
<li>b</li>
А для второго узла события, результат должен быть
<li>a3</li>
<li>b3</li>
Для первого шага, я использовал
/r/ab/event
и получить желаемый результат, однако, я застрял и запутался на втором этапе, я попытался использовать
following-sibling::*[following-sibling::action[1]]
Это дает мне результат
<li>a</li>
<li>b</li>
<action/>
<li>a2</li>
<li>b2</li>
для первого узла событий, и результат
<li>a3</li>
<li>b3</li>
для второго узла событий.
Любая идея, как решить эту проблему? Кроме того, я предполагаю, что я могу злоупотреблять следующим братом внутри предикатов, я просмотрел документацию, https://www.w3.org/TR/xpath, но не совсем понял, как его использовать, может кто-нибудь помочь объяснить немного?
Это работает. Большое спасибо! – Cirrus
Вы знаете, почему это – Cirrus
Я учусь, как удалить комментарий, пожалуйста, игнорируя комментарий «вы знаете, почему это». – Cirrus