2016-04-02 4 views
0

В приложении для Android я пытаюсь выбрать все узлы ActueleVertrekTijd, где ребенок VervoerType первого ReisDeel узел равен Intercity.XPath: выберите узел с условием для дочернего элемента sibling

У меня есть следующая структура XML:

<ReisMogelijkheden> 
    <ReisMogelijkheid> 
     <ActueleVertrekTijd>time1</ActueleVertrekTijd> 
     <ReisDeel> 
      <VervoerType>Intercity</VervoerType> 
     </ReisDeel 
     <ReisDeel> 
      <VervoerType>Intercity</VervoerType> 
     </ReisDeel> 
    </ReisMogelijkheid> 
    <ReisMogelijkheid> 
     <ActueleVertrekTijd>time2</ActueleVertrekTijd> 
     <ReisDeel> 
      <VervoerType>Sprinter</VervoerType> 
     </ReisDeel 
     <ReisDeel> 
      <VervoerType>Intercity</VervoerType> 
     </ReisDeel> 
    </ReisMogelijkheid> 
</ReisMogelijkheden> 

В этом случае я хотел бы его вернуть только time1.

После нескольких часов прибегая к помощи я пробовал различные вещи, под которыми лучше всего были:

/ReisMogelijkheden/ReisMogelijkheid/Reisdeel[1][child::VervoerType/self::text()='Intercity']/ActueleVertrekTijd 
/ReisMogelijkheden/ReisMogelijkheid[Reisdeel[VervoerType[text()='Intercity']]]]/ActueleVertrekTijd 

/ReisMogelijkheden/ReisMogelijkheid[Reisdeel[child::VervoerType/self::text()='Intercity']]/ActueleVertrekTijd 
/ReisMogelijkheden/ReisMogelijkheid[child::Reisdeel[child::VervoerType/self::text()='Intercity']]/ActueleVertrekTijd 

/ReisMogelijkheden/ReisMogelijkheid/Reisdeel[VervoerType[text()='Intercity']]/../ActueleVertrekTijd 

Но никто из них не вернулся что-то. XPath трудно отлаживать, потому что он не дает сообщений об ошибках, поэтому я застрял сейчас.

ответ

3
//ReisMogelijkheid[ReisDeel[1]/VervoerType = "Intercity"]/ActueleVertrekTijd 
+0

Да, это все! Мне пришлось сменить двойные кавычки на одинарные кавычки, потому что это строка java, но она отлично работает. – PHPirate

+0

Добро пожаловать! Рад помочь! – splash58

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