Загрузка XML-файла в массив JavaScript

Я знаю, что это было задано около миллиона раз, однако все сценарии, которые я нашел, либо taylored для человека, задающего вопрос, либо просто не работают вообще! В основном я ограничен использованием обычного JavaScript вместо библиотеки, такой как JQuery, в качестве ее для назначения uni, однако хотел бы сохранить для будущего использования, поскольку иногда JQuery не всегда является вариантом.

в любом случае, перейдем к делу. У меня есть XML-файл под названием "профили.xml", который содержит довольно простая структура:

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

поэтому в основном я хочу загружать каждый профиль в отдельный новый массив каждый раз, когда к нему нужно получить доступ, но в дополнение к этому хотел бы сделать это на основе значения атрибута "id". Возможно ли это? Если да, то как? У меня не осталось времени, чтобы изучать такие вещи, как XPATH и т. д... Это необходимо сделать с помощью JavaScript, и только на стороне сервера сценарии не разрешены.

также, Как упоминалось, некоторые скрипты просто не работают, как когда я попробуйте поместить его в функции, в которых говорится, что некоторые переменные не определены, даже когда они были установлены, поэтому сценарий должен передавать всю информацию из XML-файла в новый массив и иметь ее легко доступной во всем HTML-документе.

пожалуйста, кто-нибудь помогите, я провел последние 4-5 недель, пытаясь разобраться в этом самостоятельно, а также многие бессонные ночи, ища в сети скрипты, которые могли бы дать мне ключ!

любая помощь muchly оценили! Спасибо :-)

1 ответов


Если я не полностью понимаю вашу проблему в JSFiddle/код ниже должен помочь. Я использовал 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);