В приложении для 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 трудно отлаживать, потому что он не дает сообщений об ошибках, поэтому я застрял сейчас.
Да, это все! Мне пришлось сменить двойные кавычки на одинарные кавычки, потому что это строка java, но она отлично работает. – PHPirate
Добро пожаловать! Рад помочь! – splash58