XPath con múltiples condiciones


157

¿Qué XPath puedo usar para seleccionar cualquier categoría con un atributo de nombre especificado y cualquier autor de nodo secundario con el valor especificado?

He intentado diferentes variaciones de la ruta a continuación sin éxito:

//quotes/category[@name='Sport' and author="James Small"]

El XML:

<?xml version="1.0" encoding="utf-8"?>
<quotes>
  <category name="Sport">
   <author>James Small<quote date="09/02/1985">Quote One</quote><quote             date="11/02/1925">Quote nine</quote></author>
  </category>
   <category name="Music">
   <author>Stephen Swann
 <quote date="04/08/1972">Quote eleven</quote></author>
  </category>
  </quotes>

Respuestas:


248

Tratar:
//category[@name='Sport' and ./author/text()='James Small']


44
Para los seguidores, el mensaje de error "Esperado], pero encontrado: &&" significaba "usar la palabra clave y en lugar de &&" (como especifica esta respuesta)
rogerdpack

31

Uso :

/category[@name='Sport' and author/text()[1]='James Small']

o usar:

/category[@name='Sport' and author[starts-with(.,'James Small')]]

Es una buena regla tratar de evitar el uso del //pseudo-operador siempre que sea posible, porque su evaluación generalmente puede ser muy lenta.

También:

./somename

es equivalente a:

somename

Por lo tanto, se recomienda utilizar este último.


14

la pregunta no está clara, pero lo que entiendo es que debe seleccionar una categoría que tenga un atributo de nombre y deba tener un autor secundario con un valor especificado, corríjame si estoy trabajando

aquí hay un xpath

//category[@name='Required value'][./author[contains(.,'Required value')]]
e.g
//category[@name='Sport'][./author[contains(.,'James Small')]]

1

Puede aplicar múltiples condiciones en xpath usando y, o

//input[@class='_2zrpKA _1dBPDZ' and @type='text']

//input[@class='_2zrpKA _1dBPDZ' or @type='text']

-1

Aquí, podemos hacer esto también:

//category [@name='category name']/author[contains(text(),'authorname')]

O

//category [@name='category name']//author[contains(text(),'authorname')]

Para aprender XPATH en detalle, visite- selenium xpath en detalle

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.