我正试图通过javascript为一个PhoneGap应用程序从xml中读取数据,我收到此错误“无法调用方法'getElementsByTagName'为null'。我使用完全相同的代码用于较小的xml并且它正常工作,现在我更改为更大的xml文件它不再有效。这是我的代码和我的xml。代码:
function cargar(nombre_lista){
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","../../res/datahell.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var lista_elementos = new Array();
fichas=xmlDoc.getElementsByTagName("ficha"); //LINE WHERE THE ERROR TRIGGERS
for (var i = 0; i <fichas.length ; i++) {
tipo=(fichas[i].getElementsByTagName("tipo")[0].childNodes[0].nodeValue);
subcategoria=(fichas[i].getElementsByTagName("subcategoria")[0].childNodes[0].nodeValue);
if (tipo==window.localStorage.getItem("tipo") && subcategoria==window.localStorage.getItem("subcategoria")) {
lista_elementos.push(fichas[i].getElementsByTagName("nombre")[0].childNodes[0].nodeValue)
};
};
load_list(nombre_lista, lista_elementos);
}
XML:
<fichas>
<ficha>
<tipo>comer</tipo>
<subcategoria>restaurantes</subcategoria>
<nombre>Restaurante Azurmendi</nombre>
<coordenadas>
<latitud>43.26055</latitud>
<longitud>-2.813487</longitud>
</coordenadas>
<email>info@azurmendi.biz</email>
<redessociales></redessociales>
<telefonos>
<telefono1>944558866</telefono1>
<telefono2></telefono2>
</telefonos>
<direccion>Legina auzoa, s/n, 48195 Larrabetzu
Corredor del Txorierri salida nº25</direccion>
<web>www.azurmendi.biz</web>
<horariodevisita></horariodevisita>
<precio></precio>
<descripcion>Azurmendi gastronómico es un nuevo espacio creado y diseñado según la filosofía y los deseos de Eneko Atxa. Un restaurante con un espacio que busca la identidad y la diversidad. Un espacio vivo, vulnerable e interdependiente. Un ecosistema en el que el espacio, los humanos, los animales y los vegetales se complementan con el objetivo de según Eneko:
“ Dar placer a todo el que se adentre en él, un placer identitario que busca hacer de lo local algo universal ”.
</descripcion>
<fotos>
<foto1>../img/fotoX.jpg</foto1>
<foto2>../img/fotoY.jpg</foto2>
<foto3>../img/fotoZ.jpg</foto3>
</fotos>
</ficha>
<ficha>
<tipo>comer</tipo>
<subcategoria>bodegas</subcategoria>
<nombre>Bodega Magalarte</nombre>
<coordenadas>
<latitud>43.277768</latitud>
<longitud>-2.830489</longitud>
</coordenadas>
<email>por confirmar</email>
<redessociales></redessociales>
<telefonos>
<telefono1>617557680</telefono1>
<telefono2>636621455</telefono2>
</telefonos>
<direccion></direccion>
<web>www.magalartelezamatxakolina.com</web>
<horariodevisita></horariodevisita>
<precio>8 € (Visita guiada y cata)</precio>
<descripcion>Descubre los secretos de la elaboración del txakoli, visitando nuestros viñedos y nuestra bodega familiar “Magalarte Lezama” fundada en el siglo XIX; posiblemente una de las pocas bodegas que se mantiene desde entonces.
Nuestro viñedo respeta el medio ambiente, cosechando bajo las normas de producción integrada, logrando un txakoli totalmente autóctono, tradicional y natural, inscrito en la Denominación de Origen de Bizkaiko Txakolina, certificado por Kalitatea y bajo las normas de calidad ISO 9001-2008.
Esta bodega situada en una zona privilegiada para el desarrollo de la vid y rodeado de naturaleza, a tan solo 10 minutos del aeropuerto y de Bilbao, os brinda la oportunidad de conocer los secretos del Valle del Txorierri.
No dejes escapar la oportunidad de degustar el aroma fresco y afrutado, el sabor y la textura diferenciados de nuestro producto.</descripcion>
<fotos>
<foto1>../img/Magalarte1.jpg</foto1>
<foto2>../img/Magalarte2.jpg</foto2>
<foto3>../img/Magalarte3.jpg</foto3>
</fotos>
</ficha>
<ficha>
<tipo>ver</tipo>
<subcategoria>edificiosreligiosos</subcategoria>
<nombre>Iglesia San Cristóbal</nombre>
<coordenadas>
<latitud>43.301743</latitud>
<longitud>-2.877601</longitud>
</coordenadas>
<email></email>
<redessociales></redessociales>
<telefonos>
<telefono1></telefono1>
<telefono2></telefono2>
</telefonos>
<direccion></direccion>
<web></web>
<horariodevisita></horariodevisita>
<precio></precio>
<descripcion>Fundada en el siglo X y reedificada y ampliada en el año 1745. Es un edificio de mampuesto con grandes sillares en las esquinas. De acceso dintelado, torre rectangular y pórtico sostenido por vigas. En el interior se conserva una imagen gótica de la Virgen y el niño.</descripcion>
<fotos>
<foto1></foto1>
<foto2></foto2>
<foto3></foto3>
</fotos>
</ficha>
<ficha>
<tipo>ver</tipo>
<subcategoria>edificiosreligiosos</subcategoria>
<nombre>Iglesia San Isidro</nombre>
<coordenadas>
<latitud>43.299619</latitud>
<longitud>-2.886271</longitud>
</coordenadas>
<email></email>
<redessociales></redessociales>
<telefonos>
<telefono1>944541124</telefono1>
<telefono2></telefono2>
</telefonos>
<direccion>Lainomendi Kalea, 2. 48160 Aldekona</direccion>
<web></web>
<horariodevisita></horariodevisita>
<precio></precio>
<descripcion>Edificio construido en 1958, de planta basilical y con torre lateralizada. Portada con tres arcos y acceso al edificio en medio punto.</descripcion>
<fotos>
<foto1></foto1>
<foto2></foto2>
<foto3></foto3>
</fotos>
</ficha>
<ficha>
<tipo>ver</tipo>
<subcategoria>edificiosciviles</subcategoria>
<nombre>Kultur birika</nombre>
<coordenadas>
<latitud>43,295699</latitud>
<longitud>-2,883568</longitud>
</coordenadas>
<email>kulturbirika@kulturbirika.eu</email>
<redessociales></redessociales>
<telefonos>
<telefono1>944659714</telefono1>
<telefono2></telefono2>
</telefonos>
<direccion>Anboto Plaza, 5 , 48160</direccion>
<web>www.kulturbirika.eu</web>
<horariodevisita></horariodevisita>
<precio></precio>
<descripcion>Desde el Area de Cultura del Ayuntamiento de Derio queremos comunicar e informar de todas las materias y disciplinas culturales que se ofertan a la ciudadanía de Derio a lo largo de todo el año. Toda esta oferta cultural y de ocio se desarrolla en diferentes locales y escenarios, destacando: Larrabarri baserria, Gure Aretoa, Gazte y Kultur birika donde se ubica el Kzgunea, biblioteca, exposiciones, salas de música y danza, talleres y locales para las asociaciones.</descripcion>
<fotos>
<foto1>Kultur birika 1</foto1>
<foto2>Kultur birika 2</foto2>
<foto3>Kultur birika 3</foto3>
</fotos>
</ficha>
<ficha>
<tipo>ver</tipo>
<subcategoria>museos</subcategoria>
<nombre>B-TEK(Bizkaiko Teknologi Elkartegia</nombre>
<coordenadas>
<latitud>43,299197</latitud>
<longitud>-2,868633</longitud>
</coordenadas>
<email>btek@btek.org</email>
<redessociales></redessociales>
<telefonos>
<telefono1>944039500</telefono1>
<telefono2>946568844</telefono2>
</telefonos>
<direccion>Edificio 602 Parque Tecnológico, Astondo bidea, 48160 Elexalde</direccion>
<web>www.btek.org</web>
<horariodevisita>Lunes a Jueves de 9h a 14h y de 15h a 18h
Viernes de 9h a 14h
Duración de la visita:Visita al Centro: 2 horas, Taller: 45 minutos
( Todas las visitas se deben reservar)</horariodevisita>
<precio>3 € visita dinamizada sin taller
4 € visita dinamizada con taller</precio>
<descripcion>BTEK, el Centro de Interpretación de la Tecnología del Parque Científico y Tecnológico de Bizkaia tiene como objetivo acercar la tecnología a los jóvenes, sobre todo a los estudiantes de educación secundaria, impulsando la cultura científica-tecnológica. BTEK está ubicado en el edificio 602 del Parque, en el municipio de Derio.</descripcion>
<fotos>
<foto1>Btek1</foto1>
<foto2>Btek2</foto2>
<foto3> Btek3</foto3>
</fotos>
</ficha>
XML要大得多,但它不允许我将其全部粘贴。
答案 0 :(得分:0)
在将XML字符串解析为DOM树之前,首先需要将XML字符串转换为DOM解析器对象。
// convert the xml string response to a DOM parser
xmlDoc = ( new DOMParser() ).parseFromString( xmlhttp.responseXML, "text/xml" );
现在,您可以使用解析方法。
希望有所帮助。