2013-03-22 5 views
0

javascript를 통해 PhoneGap 앱용 XML에서 데이터를 읽으려고하는데 'getElementsByTagName'메서드를 호출 할 수 없습니다. 없는'. 더 작은 xml에 대해 똑같은 코드를 사용했는데 더 이상 작동하지 않는 더 큰 xml 파일로 변경되었으므로 제대로 작동했습니다. 여기 내 코드와 내 XML입니다. 코드 :xml 문서를 읽을 수 없습니다. (null의 getElementsByTagName 메서드를 호출 할 수 없습니다.)

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>[email protected]</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>[email protected]</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>[email protected]</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

XML 문서 또는 Ajax 요청을 구문 분석 할 때 문제가있는 것처럼 보입니다. 요청/응답이 예상 한 내용인지 확인하고 XML 형식이 올바른지 확인하십시오. –

+0

Phonegap이 아니라 브라우저 내 앱인 경우 SOP 위반을 의심합니다 ... XML 구문 분석 오류로 보입니다. – Bergi

+0

firebug net tab (또는 이에 상응하는 항목)을 확인하십시오. – gmh04

답변

0

DOM 트리처럼 구문 분석하기 전에 먼저 XML 문자열을 DOM 파서 개체로 변환해야합니다.

// convert the xml string response to a DOM parser 
xmlDoc = (new DOMParser()).parseFromString(xmlhttp.responseXML, "text/xml"); 

이제 파싱 메서드를 사용할 수 있습니다.

희망이 있습니다.