2013-10-04 16 views
0

我是一個JavaScript和jQuery的完全noob(昨天開始學習),但我已經發現它非常易於使用,非常直觀! :)用jQuery解析一個遠程(和可變的)XML文件到數組中

因此,我需要做的是解析一個XML文件(根據我發送的查詢將通過遠程PHP文件進行吐出),並將其放入一個數組中,以便以後使用它來繪製圖表等

這裏的訣竅是XML文件將根據查詢具有不同的結構和類別,所以我需要一種「通用」解析器。

我唯一可以控制的是所有的基礎項目都將被稱爲「項目」,但是每個項目中的類別將根據查詢而改變,這將在運行時由用戶修改。

結構將始終是這樣的:

<results> 
<item> 
    <variable1>value1</variable1> 
    <variable2>value2</variable2> 
    <variable3>value3</variable3> 
    <variable4>value4</variable4> 
    <variable5>value5</variable5> 
</item> 
<item> 
    <variable1>value6</variable1> 
    <variable2>value7</variable2> 
    <variable3>value8</variable3> 
    <variable4>value9</variable4> 
    <variable5>value10</variable5> 
</item> 
</results> 

,我想有一個這樣的數組:

results[0].variable1 = value1 
results[0].variable2 = value2 
results[0].variable3 = value3 
results[0].variable4 = value4 
results[0].variable5 = value5 

results[1].variable1 = value6 
results[1].variable2 = value7 
results[1].variable3 = value8 
results[1].variable4 = value9 
results[1].variable5 = value10 

但正如我所說,我只能保證在「項目」名稱。每種情況下,變量的名稱都是可變的。

有什麼建議嗎?

提前致謝!

+0

我的建議是要檢查的文件;)http://api.jquery.com/jQuery.parseXML/ –

回答

0

試試這個,

var arr={};// Object if you want an array then use=> var arr=[]; 
$('item').each(function(index,value){ 
    var data={}; 
    $(this).find('*').each(function(i,v){ 
     data[$(this).prop('tagName')]=$(this).text(); 
    }); 
    arr[index]=data; 
}) 
console.log(arr); 

Fiddle

+0

嘿,感謝您對本。我已經擺弄它,我設法讓它工作。然而,我並沒有面對一個非常奇怪的問題:取決於查詢的「長」,ajax函數將成功與否。具體來說,如果查詢具有AT至少14個元素,它將起作用。但是,少於這個,成功的功能是不會觸發的?我查看了PHP腳本生成的XML,除了元素數量外,它在所有情況下都是IDENTICAL。我能想到的只是PHP腳本響應所需的時間......任何想法爲什麼當時間少於10秒時它可能無法工作? – VMX

+0

對錯誤進行一些更深入的瞭解...查看Chrome控制檯選項卡,它似乎會引發500內部服務器錯誤。 然而,正如我所指出的那樣,XML文件與工作文件相同......唯一的區別在於它運行所需的元素/時間的數量......在這種情況下比之前更低。有任何想法嗎?? – VMX