Comunidad de diseño web y desarrollo en internet online

Buscador XML con As2

Citar            
MensajeEscrito el 16 Jun 2010 08:56 pm
Hola a todos y Gracias de Antemano por la ayuda

Lo que me encuentro haciendo es un catalogo simple de productos con un buscador que jala la info desde un xml, encontre un ejemplo que estoy adecuandolo a la estructura de mi xml y todo bien, pero al momento de necesitar incluir otro chilNode ya no me presenta el resultado
Este es el As

Código ActionScript :

System.useCodepage = true;
var meuXML:XML = new XML();
meuXML.ignoreWhite = true;
meuXML.load('port.xml');
bt._visible = false;
var armID:Array = [];
meuXML.onLoad = function() {
   qtd = this.childNodes[0].childNodes.length;
   for (var i = 0; i<qtd; i++) {
      for (var a = 0; a<this.firstChild.childNodes[i].childNodes.length; a++) {
         diminui = String(this.firstChild.childNodes[i].childNodes[a].childNodes).toLowerCase();
         if (diminui.indexOf(_root.filtro) !== -1) {
            armID.push(i);
         }
      }
   }
   armID = arranca(armID);
   if (armID.length == 0) {
      resultados.text = "Nenhum arquivo encontrado";
   } else if (armID.length == 1) {
      resultados.text = "Apenas 1 arquivo encontrado.";
   } else {
      resultados.text = "Foram encontrados "+armID.length+" arquivos.";
   }
   for (var i = 0; i<armID.length; i++) {
      bt.duplicateMovieClip('bt'+i, _root.getNextHighestDepth());
      _root['bt'+i]._y += bt._height*i+i;
      trace("cada busqueda:" + i);

      /*************************/
      var nameProd = (this.childNodes[0].childNodes[armID[i]].firstChild);
      //var desc = (this.childNodes[0].childNodes[armID[i]].childNodes[1].firstChild);
      var lengthProd = (this.childNodes[0].childNodes[armID[i]].attributes.Length);
      var headProd = (this.childNodes[0].childNodes[armID[i]].attributes.Head);
      var subProd = (this.childNodes[0].childNodes[armID[i]].attributes.Subtitution);
      var imageProd = (this.childNodes[0].childNodes[armID[i]].attributes.imagen);
      /*************************/
      _root['bt'+i].titulo.html = true;
      _root['bt'+i].titulo.htmlText = (nameProd);
      _root['bt'+i].desc.html = true;
      _root['bt'+i].desc.htmlText = (lengthProd);
      _root['bt'+i].headText.html = true;
      _root['bt'+i].headText.htmlText = (headProd);
      _root['bt'+i].subText.html = true;
      _root['bt'+i].subText.htmlText = (subProd);
      _root['bt'+i].imageText.html = true;
      _root['bt'+i].imageText.htmlText = (imageProd);   
      /*************************/
   }
   
};
function arranca(x) {
   for (var i = 0; i<x.length; i++) {
      if (x[i] == x[i+1]) {
         x.splice(i, 1);
         arranca(x);
      }
   }
   return x;
}
stop();


Este es el XML con el cual el anterior AS funciona perfectamente

Código XML :

<?xml version="1.0" encoding="UTF-8"?>
<content>
    <item Name="dos" Action ="getURL" Target="http://www.mediummultimedia.com" imagen="Idole.jpg" Length="10 - 120 cm" Head="VNormal" Subtitution="Otro"><titulo><![CDATA[OTRO]]></titulo></item>

    <item Name="uno" Action ="getURL" Target="http://www.mediummultimedia.com" imagen="Jade.jpg" Length="60 - 70 cm" Head="Very Large" Subtitution="Cream de la Cream"><titulo><![CDATA[NOMBRE DEL PRODUCTO]]></titulo></item>

    <item Name="uno" Action ="getURL" Target="http://www.mediummultimedia.com" imagen="Jade.jpg" Length="60 - 70 cm" Head="Very Large" Subtitution="Cream de la Cream"><titulo><![CDATA[TRES]]></titulo></item>
</content>


Pero cuando al realizar la siguiente modificacion para categorizar el xml dentro de etiquetas menu (para poder armar un menu) ya no sunciona el buscador
Estes es el XML modificado

Código XML :

<?xml version="1.0" encoding="UTF-8"?>
<content>
<menu Name="Color 1" colorR="250" colorG="75" colorB="64">
    <item Name="dos" Action ="getURL" Target="http://www.mediummultimedia.com" imagen="Idole.jpg" Length="10 - 120 cm" Head="VNormal" Subtitution="Otro"><titulo><![CDATA[OTRO]]></titulo></item>

    <item Name="uno" Action ="getURL" Target="http://www.mediummultimedia.com" imagen="Jade.jpg" Length="60 - 70 cm" Head="Very Large" Subtitution="Cream de la Cream"><titulo><![CDATA[NOMBRE DEL PRODUCTO]]></titulo></item>
</menu>
</content>


El cambio con respecto al anterior es que coloque el contenido dentro de una nueva <menu></menu> que necesito para armar un menu
Creo que la cuestion esta en los ChilNodes dentro del As2 pero no encuentro donde modificarle para que funcione con los cambios en el XML.

Palabras para buscar: nombre , otro , tres

Por favor, necesito una mano con esto porque me ando volviendo loco, buscando como modificarle, pero no termino de entender por donde

GRACIAS A TODOS y suerte
Aca dejo el archivo si alguien quisiera chequearlo Buscador XML y AS2

Por voraz2

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Jun 2010 11:53 pm
Bueno Gracias Igual a todos los que leyeron el Tema

Dandome un respiro volvi a revisar y dandole con ganas encontre la solucion

Lo que sucedia era que el buscador solo estaba hecho para una sola categoria, por lo que para buscar en varias categoria debia realizar un par de Arrays extras que almacenaran los indices donde se encontraba la respuesta tanto de la categoria como de el item de esa categoria y con un par de for extras listo ya esta

Aca les dejo el resultado, ojala le sirva a alguien mas

Código ActionScript :

System.useCodepage = true;
var meuXML:XML = new XML();
meuXML.ignoreWhite = true;
meuXML.load('port3.xml');
bt._visible = false;
var armID:Array = [];
var catID:Array = [];
var   categoryName:Array  = [];
var   itemName:Array  = [];
meuXML.onLoad = function() {
   xmlNode = this.firstChild;
   trace("Este es todo el contenido:" + xmlNode);
   totalCat = xmlNode.childNodes.length;
   trace("este es el TOTAL de CATEGORIAS: " + totalCat);
for (b=0; b<totalCat; b++) {
   categoryName [b]= xmlNode.childNodes[b].attributes.Name;
   trace("este es las CATEGORIAS: " + categoryName);
   itemName[b] = xmlNode.childNodes[b].childNodes[b].attributes.Name;
   trace("este es los NOMBRES DE LOS ITEMS: " + itemName);
   totalItems = xmlNode.childNodes[b].childNodes.length;
    trace(categoryName [b] + " tiene "+ totalItems+ " TEMS");
   for (var a = 0; a<totalItems; a++) {
         trace("que es: " + xmlNode.childNodes[b].childNodes[a].childNodes);
//aca creamos un string donde se iguala a minuscula cada item que se analiza
         diminui = String(xmlNode.childNodes[b].childNodes[a].childNodes).toLowerCase();
         trace("Este es lo que se analiza: " + diminui);
//aca vemos si se encuentra un resultado igual a la caja de busqueda
         if (diminui.indexOf(_root.filtro) !== -1) {
            //aca colocamos la identidad de la categoria donde se encontro un resultado
            catID.push(b);
            //aca colocamos la identidad del item donde se encontro un resultado
            armID.push(a);
            trace("este el la Categoria donde se encontro un resultado:" + catID);
            trace("este el la item dentro donde se encontro un resultado:" + armID);
         }
      }
}
   
   armID = arranca(armID);
   //son los mensajes de resultados
   if (armID.length == 0) {
      resultados.text = "Ningun archivo encontrado";
   } else if (armID.length == 1) {
      resultados.text = "1 archivo encontrado.";
   } else {
      resultados.text = armID.length+" Archivos Encontrados";
   }
   //aca armamos la ficha deacuerdo al resultado
   for (var i = 0; i<armID.length; i++) {
      bt.duplicateMovieClip('bt'+i, _root.getNextHighestDepth());
      _root['bt'+i]._y += bt._height*i+i;

      /*************************/

      var nameProd = (xmlNode.childNodes[catID[i]].childNodes[armID[i]].firstChild);
      var lengthProd = (xmlNode.childNodes[catID[i]].childNodes[armID[i]].attributes.Length);
      var headProd = (xmlNode.childNodes[catID[i]].childNodes[armID[i]].attributes.Head);
      var subProd = (xmlNode.childNodes[catID[i]].childNodes[armID[i]].attributes.Subtitution);
      var imageProd = (xmlNode.childNodes[catID[i]].childNodes[armID[i]].attributes.imagen);
      trace(armID);

      /*************************/
      _root['bt'+i].titulo.html = true;
      _root['bt'+i].titulo.htmlText = (nameProd);
      _root['bt'+i].desc.html = true;
      _root['bt'+i].desc.htmlText = (lengthProd);
      _root['bt'+i].headText.html = true;
      _root['bt'+i].headText.htmlText = (headProd);
      _root['bt'+i].subText.html = true;
      _root['bt'+i].subText.htmlText = (subProd);
      _root['bt'+i].imageText.html = true;
      _root['bt'+i].imageText.htmlText = (imageProd);   
      /*************************/
      
   }
   
};
function arranca(x) {
   for (var i = 0; i<x.length; i++) {
      if (x[i] == x[i+1]) {
         x.splice(i, 1);
         arranca(x);
      }
   }
   return x;
}
stop();



Y aca va el XML

Código XML :

<?xml version="1.0" encoding="UTF-8"?>
<content>
<menu Name="Color 1" colorR="250" colorG="75" colorB="64">
    <item Name="uno" Action ="getURL" Target="http://www.mediummultimedia.com" imagen="Idole.jpg" Length="10 - 120 cm" Head="VNormal" Subtitution="nada"><titulo><![CDATA[Akito]]></titulo></item>

    <item Name="dos" Action ="getURL" Target="http://www.mediummultimedia.com" imagen="Jade.jpg" Length="60 - 70 cm" Head="Very Large" Subtitution="Cream de la Cream"><titulo><![CDATA[Alex]]></titulo></item>
</menu>

<menu Name="Color 2" colorR="250" colorG="75" colorB="64">
    <item Name="uno" Action ="getURL" Target="http://www.mediummultimedia.com" imagen="Idole.jpg" Length="10 - 120 cm" Head="VNormal" Subtitution="nada"><titulo><![CDATA[Alicia]]></titulo></item>

    <item Name="dos" Action ="getURL" Target="http://www.mediummultimedia.com" imagen="Jade.jpg" Length="60 - 70 cm" Head="Very Large" Subtitution="Cream de la Cream"><titulo><![CDATA[Aqua]]></titulo></item>

    <item Name="tres" Action ="getURL" Target="http://www.mediummultimedia.com" imagen="Jade.jpg" Length="60 - 70 cm" Head="Very Large" Subtitution="Cream de la Cream"><titulo><![CDATA[Amelia]]></titulo></item>

</menu>
</content>


Claro que este buscador esta adecuado para que solo encuentre el nombre del producto exacto dentro de: <titulo><![CDATA[Amelia]]</titulo> de cada item y de ahi despliegue todos los demas atributos dentro de la ficha

Con todo aca les dejo el Archivo funcionando

Por voraz2

21 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.