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.

[FLASH]http://www.tmeister.net/archivos/xpath.swf, 350,400[/FLASH]

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] import com.xfactorstudio.xml.xpath.*;
//--------
mi_xml = new XPathDocument();
mi_xml.ignoreWhite = true;
mi_xml.onLoad = function() {
trace(this.selectNodes("/agenda/persona"));
};
mi_xml.load("http://www.tmeister.net/archivos/agenda.xml");
[/code]

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] objeto = ObjXML.selectNodes("/agenda/persona[./edad = '26']");
[/code]

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)

Tagged with →  
Comments
  1. Pacuzo - July 2, 2004 Reply

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

  2. Tmeister - July 2, 2004 Reply

    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)

  3. Buti - July 3, 2004 Reply

    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?

  4. Tmeister - July 3, 2004 Reply

    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]
    mi_xml.selectNodes("/agenda/persona[@id=5]/nombre");
    [/code]

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

    [code]
    obj = mi_xml.selectNodes("/agenda/persona[@id=5]/nombre");
    //Esto regresa <nombre>Alejandra</nombre>
    //y tomanos el valor asi
    trace(obj[0].firstChild);
    //Resultado Alejandra
    [/code]

    Queda Claro?

    Saludos!! 8)

  5. Buti - July 3, 2004 Reply

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

  6. Hector (cent_gen) - July 3, 2004 Reply

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

  7. eldervaz - August 14, 2004 Reply

    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

  8. Pablo - August 18, 2004 Reply

    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?

  9. julio - August 18, 2004 Reply

    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.

  10. Pablo - August 20, 2004 Reply

    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

  11. nicolas - February 8, 2005 Reply

    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

  12. Sergio - October 24, 2005 Reply

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

  13. Stonyx - December 14, 2005 Reply

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

  14. David - March 17, 2006 Reply

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

  15. Hugo - April 2, 2006 Reply

    Si la variable nombre contiene “Pepe”

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

  16. Lilian Garcia - October 2, 2006 Reply

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

  17. francisco arenas - December 20, 2006 Reply

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

    gracias!

  18. ronaldo - March 1, 2007 Reply

    hgjhgjggh

  19. Gerardo52 - March 6, 2008 Reply

    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

  20. Recursos XPath para - May 31, 2008 Reply

    [...] 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! [...]

  21. Enzo - June 24, 2008 Reply

    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!

  22. Alex - July 10, 2008 Reply

    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

  23. JAGGAO - July 17, 2009 Reply

    buenos dias esta excelente el buskador solo k anfdo necesitando uno de urgencia podeis ayudarme a desarrollarlo o bien traspasaremlo para salir del kompromismo y despeus verlo detenidamente.

    muchass gracias JAGGAO.

  24. JAGGAO - July 17, 2009 Reply

    el que necesito es uno que sea un searching, en teoria seria que al introducir la palabra si esta en el xml la muestre kon su kontenido asi komo tambien una imagen al lado para ver la descripcion en texto y en imagen !!!

    nuevamente muchas gracias espero su komentarios un abrazo !
    JAGGAO GUTIERREZ

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Follow me through my day

Send requests or questions about my products, find out on what I'm working and stay tune with my updates or just say hello ;)

Unknown Twitter error.

@Tmeister

active