7

我知道这已经被问了大约一百万次,但是我发现的所有脚本要么是为提出问题的人定制的,要么根本不起作用!基本上,我仅限于使用普通的 JavaScript 而不是像 JQuery 这样的库作为 uni 分配,但是希望存储以供将来使用,因为有时 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 传递所有信息将文件放入新的 Array 中,并使其在整个 HTML 文档中易于访问。

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

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

4

1 回答 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);
于 2012-05-20T17:00:24.543 回答