将XML文件加载到JavaScript数组中

7
我知道这个问题已经被问了无数次,但是我找到的所有脚本都要求根据提问者的需求进行定制,或者根本不起作用!基本上我只能使用普通的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并且不允许使用任何服务器端脚本。
另外,如上所述,某些脚本只是根本无法工作,因为当我尝试将它们放入函数中时,即使已经设置了某些变量,也会出现“未定义”的错误,因此需要将脚本中的所有信息都传递到新数组中,并使其随时可以在整个HTML文档中访问。
请有人帮帮忙,我已经花了过去4-5周的时间试图自己解决这个问题,还有很多失眠的夜晚在网上搜索可能给我一些线索的脚本!
非常感谢任何帮助!谢谢 :-)

你试过这个吗?http://www.openjs.com/scripts/xml_parser/ 它似乎是一个非常通用的方法。 - eric.itzhak
1个回答

11

除非我没有完全理解你的问题,否则下面的 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);

谢谢!我会尝试,但看起来它应该可以工作! :-) - GeordieDave1980

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接