2015-04-25 2 views
1

Там может быть два возможных структур:Xpath. Как указать узел между двумя узлами?

1.

<c>TTTT</c> 
<a>AAAA</a> 
<b>BBBB</b> 
<c>CCCC</c> 
<d>DDDD</d> 
<c>CCCC</c> 

2.

<c>TTTT</c> 
<a>AAAA</a> 
<b>BBBB</b> 
<d>DDDD</d> 
<c>CCCC</c> 

Как я могу выбрать узел <c> после <b> в первом случае, и если это второй случай , установите значение null?

+1

Можете ли вы опубликовать пример xml/html? – Paxic

+0

Я согласен в целом - но образец облегчает вбрасывание в инструмент и результаты тестирования, а не принятие схемы пользователей и данных. Или я уже думаю о вопросе. – Paxic

+0

@Geohut Paxic прокомментировал перед вопросом, правильно отформатированным, чтобы отобразить образец XML, чтобы сделать ситуацию понятной. Кроме того, «после b» в xpath будет «b/follow-sibling :: someNode», это вполне возможно, хотя * между двумя узлами * иногда невозможно. – har07

ответ

2

Вы можете использовать following-sibling ось для этой цели:

//b/following-sibling::*[1][self::c] 

Краткое объяснение:

  • b/following-sibling::*[1]: получить прямой родственный после <b>

  • [self::c]: проверить, что sibling - <c> элемент

Смежные вопросы