2012-03-01 17 views
5

que tienen algún XML como esto:expresión XPath que coincide con el valor del atributo "verdadero"

<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> 

Quiero coincidir en todos los elementos del motor que tienen una propiedad nodo hijo con un nombre igual a "barra" y y valor igual a "verdadero". Estoy descubriendo que el hecho de que aparezca "verdadero" en mi XML hace que mi condición siempre se evalúe como verdadera en una expresión XPath. ¿Hay una forma de evitarlo? Estoy usando Python y lxml.

EDIT:

Mi expresión XPath es (que no funciona) es: // motor [(propiedad/@ nombre = 'bar' y la propiedad/@ value = "true")]

Gracias,

+0

¿Cuál es ur expresión XPath? – Jayy

+1

Votación negativa, porque no podemos decirle lo que hizo mal si no nos dice lo que hizo. –

Respuesta

5

Así que estás diciendo

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

le da demasiados resultados? Porque para mí solo da uno.

2

¿Qué expresión de XPath probaste?

El siguiente parece funcionar bien en conseguir "blah1.com", pero no "blah2.com": //engine[property[@value="true"][@name="bar"]]

Recuerde que usted necesita para revestir sus valores de prueba de parámetros entre comillas.

17

Quiero coincidir en todos los elementos del motor

Esto es:

//engine 

que tienen una propiedad nodo hijo

Ahora bien, esto se convierte en:

//engine[property] 

con un nombre igual a "barra"

todavía más específicas:

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

y y el valor igual a "true".

Por último:

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

Me di cuenta de que mi xpath funcionó todo el tiempo, estaba haciendo algo estúpido. No obstante, Dimitre tenía la respuesta que estaba buscando. ¡Gracias! –

+3

@ G-Man, por favor, acepte su respuesta, para que le acredite. – qris

Cuestiones relacionadas