Аннотация Xpath с предикатом

Во-первых, я новичок в Xpath. Я нашел множество примеров, которые запрашивают, существует ли элемент, с помощью Xpath. Но мне не удалось реализовать тот образец, который я хочу. Мой xml похож:

<a>
    <b>
        <c>xxx</c>
        <d>yyy</d>
    </b>
</a>
<a>
    <b>
        <d>zzz</d>
    </b>
</a>

И я хочу, чтобы существовали только элементы «a» с «c» и «d». Итак, я сделал это:

@XPath("a/b[boolean(c) and boolean(d)]")
private A a;

Может, кто-нибудь покажет мне, как это правильно сделать?

Спасибо

Али


person Neron    schedule 12.10.2014    source источник


Ответы (1)


a[descendant::c and descendant::d]

выбирает a узлов с descendant узлами c и d.

Обратите внимание, что ваш образец XML недействителен, поскольку в нем отсутствует корневой узел (предположительно, это просто образец, а не ваш фактический документ ...).

person i alarmed alien    schedule 12.10.2014
comment
Спасибо за ответ. На самом деле я думаю, что должно быть так: a / b [// c и // b]. Я пробовал ваш и свой путь, но jaxb по-прежнему дает все элементы a :( - person Neron; 12.10.2014
comment
это зависит от того, насколько конкретным вы хотите быть. Вы указываете узлы c и d в a/b в исходном запросе - в вашем вопросе только сказано, что вам нужны a узлы, в которых и c, и d являются потомками. Ваш запрос в комментарии не будет работать, потому что // ищет любой узел под корневым узлом - вам нужны узлы, являющиеся потомками a. Если у вас есть конкретный результат, вы должны четко сформулировать его в своем вопросе. - person i alarmed alien; 12.10.2014
comment
Вы правы насчет a под b и c, и я исправил это :) thx. Я использовал потомок, но он не приносит элементов, даже если есть подходящие :( Не знаю, из-за аннотации - person Neron; 12.10.2014
comment
Проверяет ли ваш XML? Пробовали ли вы использовать xpath с помощью онлайн-тестера (например, freeformatter.com/xpath-tester.html) а ваш реальный XML? Существует ряд возможных проблем, если XPath не работает - это может не иметь ничего общего с самим XPath. : \ - person i alarmed alien; 12.10.2014
comment
Поскольку в одном из тегов OP упоминается, что используется moxy, оси, такие как подчиненный :: и т. Д., Не будут работать. См., Например, здесь: stackoverflow.com/questions / 8404134 / и все еще не устраненная ошибка bugs.eclipse.org /bugs/show_bug.cgi?id=365840 - person matthias_h; 12.10.2014
comment
@matthias_h Я не использовал moxy, но подозревал, что может поэтому это не сработало ... - person i alarmed alien; 12.10.2014
comment
matthias_h Думаю, это мой ответ, спасибо друзья мои, спасибо @ i-alarmed-alien - person Neron; 12.10.2014
comment
@Neron возможно XPath, который не содержит оси, будет работать в moxy: a[b[c and d]] - person har07; 12.10.2014