Busquedas tipo like con Xpath y php

Supongo que aquellos que estais acostumbrados al uso de xpath ya conocíais esto, pero a mi me ha costado conseguirlo. Para poder buscar un nodo en que contenga una cadena dada la busqueda, utilizando el xpath del domxml de php4 lo mejor es utilizar la función “contains()”.

Así, si ponemos $mibusqueda = $mixpathcontext->xpath_eval( “/elemento[contains(titulo,'quijote')]” ) ; buscará dentro de nuestro documento XML, dentro de los nodos de primer nivel llamados elemento y localizaría los nodos llamados titulo que contengan en su interior la cadena “quijote” devolviendo todos los nodos “elemento” que cumplan la condición de búsqueda

ejemplo medio completo para php4 (en php5 cambia totalmente el uso de xml):

//abrimos un documento
$doc = domxml_open_file(realpath('libros.xml'));
//guardamos en una variable la expresión de búsqueda
$expresion = "/XMLDATA/GRUPO/ELEMENTO[contains(titulo,'quijote')]";
//no obligatorio, iniciamos el xpath
$ini= $doc->xpath_init();
//creamos un nuevo contexto de búsqueda
$xpath = $doc->xpath_new_context();
//hacemos la consulta en ese contexto y la guardamos en la variable selectNode
$selectNode = $xpath->xpath_eval($expresion);
//selectNode contendrá el conjunto de nodos resultante del la búsqueda con xpath (se accedería a cada uno con $selectNode->nodeset[i])

Referencias


Leave a Reply