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. 😛
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.dev/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.dev/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)
mmm y como instalo las librerás o en que folder las colo co o como?
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)
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?
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)
Muy claro, tená dudas del tipo de objeto que devolvá el método selectNodes.
Muchas gracias Tmeister!
😉
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 😉
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
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?
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.
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
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
Como puede XPATH devolver el parent de un nodo. He visto que hay un metodo definido como ancester(), peron no consigo implementarlo.
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”””””””””
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… ?
Si la variable nombre contiene “Pepe”
nombre[0].fistChild será “Pepe” (sin las etiquetas)
he probado el ejemplo con la última versión descargable de xpath de xfactor y no funciona… alguien puede explicar porqué???
gracias!
hgjhgjggh
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
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!
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
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.
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