c # xpath с ИЛИ - PullRequest
       46

c # xpath с ИЛИ

0 голосов
/ 29 октября 2009

У меня есть следующий XML:

<users>
 <user>
  <location>ny</location>
  <status>1</status>
 </user>
 <user>
  <location>nj</location>
  <status>1</status>
 </user>
 <user>
  <location>pa</location>
  <status>50</status>
 </user>
</users>

Что мне действительно нужно, так это все пользователи в ny или nj, которые также имеют статус 1.

На основании предыдущих ответов и некоторого дополнительного поиска в Google, я придумал:

/users/user[location='ny' and status='1']|/users/user[location='nj' and status='1'

Есть ли менее подробный, чтобы написать это? то есть больше по линии:

/users/user[location='ny' | 'pa']  and /users/user[status='1']

Ответы [ 4 ]

3 голосов
/ 29 октября 2009

XPath, который вы ищете:

/users/user[location='ny']|/users/user[status='1']

Вы можете проверить это здесь:

http://www.futurelab.ch/xmlkurs/xpath.en.html

PS: Ваш XML выше неверен (статус неверно закрыт тегом высоты)

1 голос
/ 29 октября 2009

Следующее также будет работать:

    /users/user[location='ny' | status='1']
0 голосов
/ 29 октября 2009

должно быть

  /users/user[(location='ny' or location='nj') and (status = '1') ]

Я не думаю, что '|' допустимо в предикате, так как оно представляет выражение объединения в синтаксисе XPath

0 голосов
/ 29 октября 2009

// пользователь [location = 'ny' | статус = '1'] //.[location='ny '| статус = '1']»

Вместо этого я бы сделал местоположение и статус атрибутами и ловил бы их. Они просто тратят пространство так, как есть. Кроме того, учтите для своего текста, если вы сохраняете текущую структуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...