2016-03-08 2 views
0

У меня есть XML, и мне нужно запросить все узлы <USER>, особенно если значения <userID> одинаковы. Узел, который я хочу проверить, - это идентификатор пользователя. В приведенном ниже примере обратите внимание, что значения 2 <userID> отличаются друг от друга, поэтому я хочу, чтобы результат оценки XPath был ложным.Использовать xpath для запроса нескольких узлов для определенного значения

Пример XML:

<xml> 
<CHANGE_USER_001> 
    <USER> 
     <userID>joebloggs</userID> 
    </USER> 
</CHANGE_USER_001> 
<CHANGE_USER_001> 
    <USER> 
     <userID>joebloggs1</userID> 
    </USER> 
</CHANGE_USER_001> 
</xml> 

Моя попытка команды XPATH является

//USER/userID='joebloggs' 

Запрос возвращает истину, но я хотел бы, чтобы проверить против каждого <userID> узла.

Если возвращающий логическое значение не представляется возможным, то я мог бы получить число <userID> узлов, а затем получить число <userID> строк, равных мое конкретное значение, а затем сравнить их, но как проверить все <userID> узлов для тех же стоимость?

+0

Вопрос непонятен! Что вы подразумеваете под _if, что значения все одинаковые? Какие узлы вы хотите запросить? –

+0

Я хочу запросить узел userID и проверить, являются ли они одинаковыми значениями – andrewb

+0

Может ли быть более 2 пользователей? Могут ли элементы с именем CHANGE_USER_001 и CHANGE_USER_002 иметь разные имена? – JerryM

ответ

2

Это XPath, not(//userID != //userID)

, возвращает false, когда по крайней мере один userID отличается от любого другого userID во всем документе. Он возвращает true, когда все userID s одинаковы.

Оператор != возвращает true, если элементы на правой стороне выражения, по крайней мере, 1 значение, которое не соответствует по крайней мере, один из пунктов на левой стороне, в противном случае она возвращает false.

+1

Очень красиво и лаконично! – JerryM

+0

Могу ли я назначить логическую переменную для результата? – andrewb

+0

Результат этого выражения всегда является логическим значением. –

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