[XPath] Seleccionar nodos que contengan cierta subcadena de texto

seleccionar nodos xpath incluyan cadenaUno de mis “vicios” ocultos (como desarrollador) es el uso de XSLT y XPath cada vez que puedo (regexp no le queda a la zaga pero si puedo prefiero transformar a extraer información)

Con esta entrada quiero regalaros un apunte rápido que os permita extraer de cualquier fichero xml aquellos nodo que contengan, en uno de sus atributos determinado fragmento de texto.

//img[contains(@src,'userfile')]/@src

Donde:

  • //img permite recuperar cualquier elemento img independientemente de la profundidad a la que se encuentre en el árbol (gracias al //)
  • contains(…) función para el manejo de cadenas de texto que nos permite buscar la subcadena ‘userfile’ en el atributo @src

Este fragmento de texto podrá ser utilizado en cualquier expresión XPath para recuperar todos los nodos con la etiqueta img (cuando lo necesité estaba parseando un fichero xhtml) cuyo atributo @src contenga la cadena userfile.

Espero que le sea de utilidad a todos aquellos que hacen turismo por la Red buscando soluciones de programación a los típicos problemas que, tarde o temprano, suelen aparecer.

Sea el siguiente xml

<recursos>
    <img src="./serverfile/foto1.jpg"/>
    <img src="./userfile/foto2.jpg"/>
    <img src="./serverfile/foto3.jpg"/>
    <img src="./userfile/foto4.jpg"/>
</recursos>

la expresión propuesta recuperará las entradas que aparecen en las líneas #3 y #5

Conclusión

Expresión XPath para recuperar aquellos nodos que contienen cierta cadena de texto.

Espero que os sea de utilidad (a mi, con la mala cabeza que tengo, y que sólo tengo la oportunidad de usar XPath de vez en cuando, seguro que me gustará “encontrarlo” escrito por aquí ;))

Y tú

  • ¿qué opinas de XSLT/XPath?
  • ¿eres más de transformadas o expresiones regulares?
  • ¿has usado XPath?
  • ¿qué es lo más complicado que has hecho con esta tecnología?

4 comentarios en “[XPath] Seleccionar nodos que contengan cierta subcadena de texto

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s