2012-05-20 19 views
5

Sé que se ha preguntado alrededor de un millón de veces, sin embargo, todos los guiones que he encontrado se adaptan a la persona que hace la pregunta o simplemente no funcionan en absoluto. Básicamente, estoy limitado a usar JavaScript normal en lugar de una biblioteca como JQuery como para una asignación uni; sin embargo, me gustaría tenerlo almacenado para usarlo en el futuro, ya que a veces JQuery no siempre es una opción.Cargando archivo XML en JavaScript Array

De todos modos, corte a la caza. Tengo un archivo XML llamado "profiles.xml", que contiene una estructura bastante sencilla:

<?xml version="1.0" encoding="iso-8859-1"?> 
<profiles> 
<profile id="1"> 
    <pic>images/profiles/person1/x.jpg</pic> 
    <name>Joe Bloggs</name> 
    <nickname>J-Bloggs</nickname> 
    <age>21</age> 
    <email>[email protected]</email> 
    <role>Web Site Manager</role> 
    <likes> 
      <like1>Food</like1> 
      <like2>Drink</like2> 
      <like3>Computing</like3> 
      <like4>Music</like4> 
    </likes> 
    <dislikes> 
      <dislike1>Rude People</dislike1> 
      <dislike2>Rude People</dislike2> 
    </dislikes> 
    <favwebsite>http://www.facebook.com</favwebsite> 
</profile> 
</profiles> 

Así que básicamente estoy queriendo cargar cada perfil en una nueva matriz separada cada vez que se necesita acceder pero además a quien le gustaría hacerlo basado en el valor del atributo "id". es posible? ¿Si es así, cómo? No tengo tiempo para aprender cosas como XPATH, etc. Esto debe hacerse usando JavaScript y solo no se permite el uso de scripts en el servidor.

También como se mencionó, algunos scripts simplemente no funcionan ya que cuando trato de ponerlo en funciones aparece diciendo que ciertas variables no están definidas, incluso cuando se han configurado, por lo que el script debe pasar todo el información del archivo XML en la nueva matriz y tenerlo fácilmente accesible en todo el documento HTML.

Por favor, alguien de ayuda, he pasado las últimas 4-5 semanas tratando de resolver esto por mi cuenta, así como muchas noches sin dormir buscando en la red guiones que puedan darme una pista.

¡Cualquier ayuda es muy apreciada! Gracias :-)

+0

¿Has probado esto? http://www.openjs.com/scripts/xml_parser/ parece ser un método muy genérico. –

Respuesta

9

A menos que no entienda completamente su problema, el JSFiddle/code below debería ayudar. Usé una matriz de 2 d.

var profiles = xml.getElementsByTagName("profile"); 
var arr = []; 
for (var key in profiles){ 
    arr.push([]); 
    var nodes = profiles[key].childNodes; 
    for (var ele in nodes){ 
     if(nodes[ele]){ 
      arr[key].push(nodes[ele]); 
     } 
    } 
} 
console.log(arr); 
+0

¡Gracias! Intentaré eso, pero parece que funcionará. :-) – GeordieDave1980