2012-05-20 51 views
5

我知道這已被問及大約一百萬次,但是我發現的所有腳本都是針對提問的人或者完全不工作的人!基本上,我僅限於使用普通的JavaScript而不是像JQuery這樣的庫作爲uni任務,但是因爲有時候JQuery並不總是一個選項,所以希望將其存儲以供將來使用。將XML文件加載到JavaScript數組

無論如何切入追逐。我有一個名爲「的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>[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文件導入到新的Array中,並可以在整個HTML文檔中輕鬆訪問。

請別人幫忙,我已經花了過去4-5個星期的時間嘗試在我自己的工作和許多不眠之夜在網上搜索腳本,可能會給我一個線索!

任何幫助非常感謝!謝謝:-)

+0

你試過這個嗎? http://www.openjs.com/scripts/xml_parser/它似乎是一個非常通用的方法。 –

回答

9

除非我不完全理解你的問題,下面的JSFiddle /代碼應該有所幫助。我使用了一個2維數組。

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); 
+0

謝謝!我會嘗試,但它看起來會起作用! :-) – GeordieDave1980