Bienvenido a Klr20mg

Cronicas de un desarrollador

Actualmente soy Jefe de Desarrollo del area Flash en Sapotek de México en la cual trabajo desde hace mas de 4 años. Desarrollando aplicaciones en Flash para Web mas comúnmente llamadas (RIAs)

Estas en : Blog » Xpath Suena bien!
  • Decrease font size
  • Default font size
  • Increase font size
  • color default
  • color verde
  • color azul
Xpath Suena bien!
AddThis Social Bookmark Button
Post2PDF Print
June 29th, 2004

Xpath es una librería para Flash que conocí hace poco.

Esta librería no es más que una clase que extiende a la clase XML de Flash añadiéndole métodos muy interesantes

Lo que se puede hacer con esta librería, son búsquedas mediante "querys" dentro de un objeto XML que previamente a sido cargado dentro de Flash, entre otras cosas. :P

Estos "querys" son sumamente simples, un ejemplo:

Este ejemplo es un "buscador" el cual acepta un parámetro y por supuesto la cadena a buscar.

Agenda.xml

<?xml version="1.0" ?>
<agenda>
<persona id="1">
<nombre>Laura</nombre>
<apellido>Perez</apellido>
<edad>20</edad>
<signo>aries</signo>
</persona>

<persona id="2">
<nombre>Fatima</nombre>
<apellido>Ruiz</apellido>
<edad>24</edad>
<signo>cancer</signo>
</persona>

<persona id="3">
<nombre>Guadalupe</nombre>
<apellido>Garcia</apellido>
<edad>19</edad>
<signo>picis</signo>
</persona>

Esta es la estructura de nuestro XML

La manera trabajar con esta libreria es muy similar a la forma en que trabajamos con el Objeto XML tradicional de Flash

CODE:
  1. import com.xfactorstudio.xml.xpath.*;
  2. //--------
  3. mi_xml = new XPathDocument();
  4. mi_xml.ignoreWhite = true;
  5. mi_xml.onLoad = function() {
  6.     trace(this.selectNodes("/agenda/persona"));
  7. };
  8. mi_xml.load("http://www.klr20mg.com/archivos/agenda.xml");

Es basicamente lo mismo, la unica diferencia es que : antes que nada debemos importar las librerias, y despues crear una "instancia" de la clase XPathDocument(); los metodos load y OnLoad siguen siendo los mismos. Pero como dije antes esta clase cuanta con metodos extra.

Una vez cargado nuestro XML dentro de Flash.
Si queremos, por ejemplo, que Xpath nos muestre únicamente los nodos en que la edad sea 26 usamos el siguiente "query"

CODE:
  1. objeto = ObjXML.selectNodes("/agenda/persona[./edad = '26']");

Donde ObjXML es el objeto donde hemos cargado la informacion de agenda.xml en este case mi_xml
Si se dan cuenta el acceso a los nodos es mediante "/" siguiendo la estructura jerárquica del XML lo cual nos facilita la vida.

En realidad es una herramienta interesante, por supuesto que tiene sus pro´s y sus contras, en lo personal me gusta crear un objeto con la información del XML y acceder a ella mediante objeto[index].nodo, pero como todo, es cuestión de gustos y por supuesto dependiendo de los requerimientos del proyecto en donde se va a aplicar :D.

En esta página hay excelentes ejemplos http://www.zvon.org

Aqui los Archivos Fuente del ejemplo , incluye las librerías.

Saludos!! 8)

Posibles Posts Relacionados
22 Comentarios

Si deseas poner codigo en tu comentario utiliza la etiqueta < pre > < /pre >

mmm y como instalo las librerías o en que folder las colo co o como?

Pacuzo escribio el 2-July-2004 a las 3:02 pm

La ruta de las clase es com.xfactorstudio.xml.xpath

entonces las clases deben de estar en com/xfactorstudio/xml/xpath

Si haz descargado el Zip lo veras mas claramente...

Saludos!! 8)

Tmeister escribio el 2-July-2004 a las 3:06 pm

Hola Tmeister, buen ejemplo, genial.
Yo he intentado ir un poco más allá, y en tu funcion dibujar, para seleccionar cada uno de los nodos he usado:

mi_xml.selectNodes("/agenda/persona[@id="+c+"]/nombre");

Esto funciona pero no sé como referirme al valor del nodo nombre, y mirando la documentación, no veo ninguna referencia, aunque seguro que es facil. ¿Me puedes echar una mano?

Buti escribio el 3-July-2004 a las 12:42 am

Buenas..

Segun el ejemplo "c" debe ser un numero entre 1 y 8 que son los id´s de los nodos...

Bien entonces el Query quedaria asi

CODE:
  1. mi_xml.selectNodes("/agenda/persona[@id=5]/nombre");

Este metodo regresa un objeto con los valores, entonces para referirnos a dicho valor los hacemos asi

CODE:
  1. obj = mi_xml.selectNodes("/agenda/persona[@id=5]/nombre");
  2. //Esto regresa &lt;nombre&gt;Alejandra&lt;/nombre&gt;
  3. //y tomanos el valor asi
  4. trace(obj[0].firstChild);
  5. //Resultado Alejandra

Queda Claro?

Saludos!! 8)

Tmeister escribio el 3-July-2004 a las 12:45 pm

Muy claro, tenía dudas del tipo de objeto que devolvía el método selectNodes.
Muchas gracias Tmeister!
;)

Buti escribio el 3-July-2004 a las 5:29 pm

pues muy interesante, pero veo que el ejempo no funciona bien, al parecer tiene un problema con alguna especie de cache, por que realice una busuqeda y todo va bien, pero al querer realizar otra, sigue mostrando el mismo resultado... :S
ya estoy descargando e intentare ver que pasa, pero seria bueno que lo comentaras ;)

Hector (cent_gen) escribio el 3-July-2004 a las 6:28 pm

pues eso pasa por ASI SEA EL MISMO CRITERIO debes de volver a seleccionarlo, en todo caso se soluciona si en vez de usar el boton BUSCAR, la "busqueda" la hacer directamente al pulsar el combo, asi obligaria a seleccionarlo de nuevo, hay variantes, pero esto puede ayudar a solucionar tu problema, por mi parte muy bueno esto tmeister

eldervaz escribio el 14-August-2004 a las 8:34 pm

Muy bien explicado. A mi, por suerte el ejemplo me sirvio de maravilla y no tuve ningun problema con realizar una nueva busqueda. Pero si tengo otro problema: los datos del xml tienen acentos y aparece la letra ñ y cuando mostrar traer algo asi no me trae nada.
Alguien sabe porque?

Pablo escribio el 18-August-2004 a las 7:55 am

Espectacular, La verdad es que si yo algun dia logro manejar el lenguaje, ya sea de action, xml, etc como lo haces vos, estaria mas que satisfecho.

julio escribio el 18-August-2004 a las 6:04 pm

Perdon por el error, pero quise decir : Cuando intento traer algun texto que contiene una ñ o una vocal con acento me trae cualquier cosa... si alguien sabe como puedo solucionarlo se lo agradeceria

Pablo escribio el 20-August-2004 a las 11:52 am

hola tmesiter... como estas tanto tiempo?... te queria consultar si el uso de estas clases para XPath es Eficiente... y si la busqueda es eficiente en un archivo xml medianamente grande..
gracias de antemano

nicolas escribio el 8-February-2005 a las 9:49 am

Como puede XPATH devolver el parent de un nodo. He visto que hay un metodo definido como ancester(), peron no consigo implementarlo.

Sergio escribio el 24-October-2005 a las 4:16 am

hola muy bueno esto de xpatch la verdad me vino a solucionar muchas cosas yo tengo un problemita espero me puedan ayudar como hago el buscador dentro del list te dejo los archivos por si quicieran ayudarme y mi correo es

tonyx_788@hotmail.com

adjunto los archivos http://mx.geocities.com/tonyx_788/internet.zip
"""""""si copias y pegas la dir en el explorer si funciona"""""""""

Stonyx escribio el 14-December-2005 a las 6:15 pm

Hola Tmeister,
No entiendo el uso de [0] en el :
trace(obj[0].firstChild);
Y otra pregunta :
"obj" es un objeto de quel typo ? xml, var... ?

David escribio el 17-March-2006 a las 7:59 am

Si la variable nombre contiene "Pepe"

nombre[0].fistChild sería "Pepe" (sin las etiquetas)

Hugo escribio el 2-April-2006 a las 5:43 pm

joan garcia...

Interesting post. I came across this blog by accident, but it was a good accident. I have now bookmarked your blog for future use. Best wishes. Lilian Garcia....

Lilian Garcia escribio el 2-October-2006 a las 4:12 am

he probado el ejemplo con la última versión descargable de xpath de xfactor y no funciona... alguien puede explicar porqué???

gracias!

francisco arenas escribio el 20-December-2006 a las 3:07 pm

hgjhgjggh

ronaldo escribio el 1-March-2007 a las 10:04 am

Primero quiero felicitarte esta genial este sitio, mi pregunta es se puede impedir la copia de un cd multimedia hecho totalmente en flash?

estoy desarrollando uno y quiero saber si por algun medio o programa se puede impedir que lo pirateen

saludos y gracias

Gerardo52 escribio el 6-March-2008 a las 9:50 am

[...] XfactorStudio: También existe una implementación (la mejor y más completa) casi exacta de XPath para ActionScript (AS1.0 y AS2.0) desde hace bastante tiempo en xfactorstudios, la cual ya se ha mencionado aquí en otas ocasiones. Info y ejemplos con la implementación de xfactorstudios: - Xpath Example - Xpath Suena bien! [...]

Recursos XPath para Flash : Joan Garnet escribio el 31-May-2008 a las 9:30 pm

Buenas, muy bueno el ejemplo posteado! estoy intentando hacer algo para lo que no encuentro la vuelta y queria ver si me podias hacer si sabes si se puede hacer o no.. necesito buscar texto parcial dentro de un tag de xml, por ejemplo "publicada" en el tag Alguna cosa publicada, sin embargo el ejemplo que posteaste busca el texto completo.. hay alguna forma de hacer lo que necesito? gracias!

Enzo escribio el 24-June-2008 a las 3:11 pm

Buen apunte el q has puesto en la web, pero tengo unos problemitas, 1- doy buscar en tu ejemplo por edad 26 y bi, aparece la busqueda, pero cuando vuelvo a dar nueva busqueda aparece la busqueda anterior, oprimo el boton "mostrar todo", doy nuevamente la busqueda y me sigue mostrando lo mismo.... 2- cuando intento crear el proyector sale la pagina en blanco.

tendra algo q ver si estoy usando flash 8.0?

Ayudame porfa, te lo agradeceria, gracias

Alex escribio el 10-July-2008 a las 10:24 am

 Blog editado por:

Enrique Chavez aka Tmeister

 Sigueme en Twitter

  • A punto de iniciar un curso de joomla, A ver que tal 3 hrs ago
  • Que divertido es modificar el blog "En caliente" y que todo deje de funcionar. XD 5 hrs ago
  • More updates...

Posting tweet...

 Suscribete


AddThis Social Bookmark Button

 Archivo

2008
2007
2006
2005
2004