将XML文件加载到JavaScript数组中

时间:2012-05-20 16:33:31

标签: 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>

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

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

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

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

1 个答案:

答案 0 :(得分: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);