XPATH выражение, которое соответствует значению атрибута «true» - PullRequest
5 голосов
/ 01 марта 2012

У меня есть такой XML-код:

<engine-set>
  <engine host-ref="blah1.com">
  <property name="foo" value="true"/>
  <property name="bar" value="true"/>
 </engine>
 <engine host-ref="blah2.com">
  <property name="foo" value="true"/>
  <property name="bar" value="false"/>
 </engine>
</engine-set>

Я хочу сопоставить все элементы движка, которые имеют свойство дочернего узла с именем, равным "bar", и значением, равным "true" Я обнаружил тот факт, что «true» появляется в моем XML, заставляет мое условие всегда оценивать как true в выражении XPath. Есть ли способ обойти? Я использую Python и lxml.

EDIT:

Мое выражение xpath (это не работает): // engine [(property / @ name = 'bar' и property / @ value = "true")]

Спасибо,

Ответы [ 3 ]

18 голосов
/ 01 марта 2012

Я хочу сопоставить все элементы двигателя

Это:

//engine

, которые имеют свойство дочернего узла

Теперь это становится:

//engine[property]

с именем, равным "bar"

Еще более конкретно:

//engine[property[@name = 'bar']] 

и значение равно «true».

Наконец:

//engine[property[@name = 'bar' and @value = 'true']] 
5 голосов
/ 01 марта 2012

То есть, вы говорите,

//engine[property[@name='bar' and @value='true']]

дает вам слишком много результатов?Потому что для меня это дает только один.

2 голосов
/ 01 марта 2012

Какое выражение XPath вы пробовали?

Похоже, что для получения "blah1.com" хорошо, но не для blah2.com:чтобы заключить значения параметров теста в кавычки.

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