Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/01/2012, 02:17
Avatar de jorgelpadronb
jorgelpadronb
 
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 6 meses
Puntos: 37
Respuesta: No carga el XML

Cita:
Iniciado por zerokilled Ver Mensaje
me falla la vista o no se en que estaba pensando. juro haber visto diferencia en la i. es de mi parecer que tanto el activex como createDocument devuelve un objeto tipo document. si eso esta bien, entonces debe funcionarte getElementsByTagName. acerca de la forma correcta, dependera de como tu quieras trabajar. para efecto de tu proposito, creo que es mas comodo con getElementsByTagName. lo que debes velar es cuando intentas obtener los elementos. recuerda que debes esperar a que el documento cargue completamente ya que dichas instrucciones son asincronos.
Parece que es el color de la fuente que tiende a confundir, en un momento a mí también me pareció que la i era minúscula, pero me fijé bién y es mayúscula. También lo comprobé en el código que tengo aquí y efectivamente todas son mayúsculas.

Es probable que sea que no estoy dando tiempo a que cargue el xml? Yo tengo una función para cargar el xml, y en esa misma función, justo después de las instrucciones para cargar hago getElementsByTagName para extraer los los Items a un Array. Es posible que no me extraiga nada porque no estoy dando tiempo a que el xml cargue completo? Puede pasar eso aunque el xml tenga solo 10 elementos? En ese caso que puedo hacer para asegurar que el xml ha cargado completo antes de hacer getElementsByTagName dentro de la misma función que carga el xml?

Esta es la función completa:

Código Javascript:
Ver original
  1. function LoadItems(){
  2.      //aquí declaro las variables que voy a usar
  3.      //las que no están declaradas es porque son globales y se declaran fuera de la función
  4.      var xmlFile = 'Menu.xml';//nombre del archivo XML
  5.      var itemMask = {Id: 0,
  6.                      Text: '',
  7.                      Link: '',
  8.                      Title: '',
  9.                      Inside: 0}//Objeto para modelo para recoger los datos del XML
  10.      var xmlResult = null;//Variable para almacenar el documento XML cargado
  11.      var xmlList = null;//Variable para la lista de Items leidos del XML
  12.      var count = 0;//Variable para la cantidad de Items
  13.      //Ahora cargo el XML para diferentes navegadores
  14.      if (navigator.appName == "Microsoft Internet Explorer"){
  15.         xmlResult = new ActiveXObject("Microsoft.XMLDOM");
  16.         xmlResult.async = false;
  17.         xmlResult.load(xmlFile);
  18.      }else{          
  19.         var xmlResult = document.implementation.createDocument("GET",xmlFile,false);
  20.      }
  21.      //Una vez cargado...
  22.      alert(xmlResult);//Esto me da [object.document]
  23.      xmlList = xmlResult.getElementsByTagName('Item');//Cargo los Items del documento
  24.      alert(xmlList);//Esto me da [object.NodeList]
  25.      Menu = new Array();//Sobreescribo la variable global Menu con un Array vacio
  26.      var i = 0;//Inicializo el contador para el bucle
  27.      var count = xmlList.length;//Tomo la cantidad de Items para el bucle
  28.      alert(count);//Ahora es el problema, me pone 0
  29.      for(i=0;i<count;i++){
  30.         itm = xmlList[i];
  31.         itemMask['Id'] = itm.Id;
  32.         itemMask['Text'] = itm.Text;
  33.         itemMask['Link'] = itm.Link;
  34.         itemMask['Title'] = itm.Title;
  35.         itemMask['Inside'] = itm.Inside;
  36.         Menu[i] = itemMask;
  37.      }//Y luego por supuesto el bucle no se ejecuta porque la variable count es 0
  38.  }

Datos importantes: Estoy usando Google Chrome.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.

Última edición por jorgelpadronb; 03/01/2012 a las 02:45