Cita:
Iniciado por zerokilled

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 originalfunction LoadItems(){
//aquí declaro las variables que voy a usar
//las que no están declaradas es porque son globales y se declaran fuera de la función
var xmlFile = 'Menu.xml';//nombre del archivo XML
var itemMask = {Id: 0,
Text: '',
Link: '',
Title: '',
Inside: 0}//Objeto para modelo para recoger los datos del XML
var xmlResult = null;//Variable para almacenar el documento XML cargado
var xmlList = null;//Variable para la lista de Items leidos del XML
var count = 0;//Variable para la cantidad de Items
//Ahora cargo el XML para diferentes navegadores
if (navigator.appName == "Microsoft Internet Explorer"){
xmlResult = new ActiveXObject("Microsoft.XMLDOM");
xmlResult.async = false;
xmlResult.load(xmlFile);
}else{
var xmlResult = document.implementation.createDocument("GET",xmlFile,false);
}
//Una vez cargado...
alert(xmlResult);//Esto me da [object.document]
xmlList = xmlResult.getElementsByTagName('Item');//Cargo los Items del documento
alert(xmlList);//Esto me da [object.NodeList]
Menu = new Array();//Sobreescribo la variable global Menu con un Array vacio
var i = 0;//Inicializo el contador para el bucle
var count = xmlList.length;//Tomo la cantidad de Items para el bucle
alert(count);//Ahora es el problema, me pone 0
for(i=0;i<count;i++){
itm = xmlList[i];
itemMask['Id'] = itm.Id;
itemMask['Text'] = itm.Text;
itemMask['Link'] = itm.Link;
itemMask['Title'] = itm.Title;
itemMask['Inside'] = itm.Inside;
Menu[i] = itemMask;
}//Y luego por supuesto el bucle no se ejecuta porque la variable count es 0
}
Datos importantes: Estoy usando Google Chrome.
Saludos.