2012-05-20 8 views
5

Ich weiß, das wurde über eine Million mal gefragt, aber alle Skripte, die ich gefunden habe, sind entweder für die Person, die die Frage stellt oder nur überhaupt nicht arbeiten! Grundsätzlich beschränke ich mich darauf, normales JavaScript anstelle von einer Bibliothek wie JQuery für eine Uni-Zuweisung zu verwenden, möchte jedoch für die zukünftige Verwendung gespeichert haben, da JQuery manchmal nicht immer eine Option ist.Laden der XML-Datei in JavaScript-Array

Wie auch immer, auf die Jagd. Ich habe eine XML-Datei „profiles.xml“ genannt, was eine ziemlich einfache Struktur enthält:

<?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> 

Also im Grunde ist ich will jedes Mal, jedes Profil in ein separates neues Array laden sie zugegriffen werden muss, sondern darüber hinaus dazu würde es gerne auf Basis des Attributwerts "id" tun. Ist das möglich? Wenn das so ist, wie? Ich habe keine Zeit mehr, um Sachen wie XPATH usw. zu lernen. Dies muss mit JavaScript gemacht werden und alleine ist kein serverseitiges Scripting erlaubt.

Auch wie erwähnt, einige Skripte funktionieren einfach nicht als wenn ich versuche, es in Funktionen zu setzen, kommt es, dass bestimmte Variablen nicht definiert sind, auch wenn sie festgelegt wurden, so dass das Skript alle übergeben werden muss Informationen aus der XML-Datei in das neue Array und haben sie im gesamten HTML-Dokument leicht zugänglich.

Bitte jemanden helfen, ich habe die letzten 4-5 Wochen versucht, dies auf eigene Faust sowie viele schlaflose Nächte im Netz für Skripte, die mir einen Hinweis geben können, zu arbeiten!

Jede Hilfe wird sehr geschätzt! Danke :-)

+0

Haben Sie das versucht? http://www.openjs.com/scripts/xml_parser/ Es scheint als eine sehr generische Methode. –

Antwort

9

Sofern ich Ihr Problem nicht vollständig verstehe, sollte der JSFiddle/code unten helfen. Ich habe ein 2-D-Array verwendet.

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

Danke !! Ich werde es versuchen, aber es sieht so aus als würde es funktionieren! :-) – GeordieDave1980