将XML文件加载到JavaScript数组中

Geo*_*980 6 javascript xml arrays

我知道这已被问了大约一百万次,但是我发现的所有剧本都是针对提出问题的人或者根本不工作的人!基本上我只限于使用普通的JavaScript而不是像JQuery这样的库作为单一赋值,但是希望存储以备将来使用,因为有时JQuery并不总是一个选项.

无论如何切入追逐.我有一个名为"profiles.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>j.blogs@me.com</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>
Run Code Online (Sandbox Code Playgroud)

所以基本上我想要在每次需要访问时将每个配置文件加载到一个单独的新数组中,但除此之外,还希望根据"id"属性值进行操作.这可能吗?如果是这样的话?我还没有时间学习XPATH之类的东西......这需要使用JavaScript来完成,而且只允许使用服务器端脚本.

另外如上所述,某些脚本只是不起作用,因为当我尝试将其放入函数时,它会说某些变量即使已经设置也没有定义,因此需要脚本从XML传递所有信息将文件放入新数组中,并在整个HTML文档中随时访问它.

请有人帮忙,过去4-5周我一直在努力解决这个问题以及许多不眠之夜在网上搜索可能给我一些线索的脚本!

任何帮助非常感谢!谢谢 :-)

mar*_*ljn 10

除非我不完全理解您的问题,否则下面的JSFiddle /代码应该有所帮助.我使用了二维数组.

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);
Run Code Online (Sandbox Code Playgroud)