2013-04-05 43 views
0

所以我從Winamp的打開這個XML轉換成JSON jQuery的

<dict> 
     <key>Track ID</key><integer>0</integer> 
     <key>Name</key><string>American Idol 2013</string> 
     <key>Artist</key><string>Amber Holcomb</string> 
     <key>Album Artist</key><string>Amber Holcomb</string> 
     <key>Album</key><string>Unknown Album</string> 
     <key>Kind</key><string>MPEG audio file</string> 
     <key>Size</key><integer>3645</integer> 
     <key>Total Time</key><integer>233000</integer> 
     <key>Date Modified</key><date>Thu Mar 14 12:11:12 2013</date> 
     <key>Date Added</key><date>Thu Apr 04 16:10:15 2013</date> 
     <key>Bitrate</key><integer>128</integer> 
     <key>Location</key><string>file://localhost/Z:%5Canthony%5CMusic%5CiTunes%5CiTunes%20Media%5CMusic%5CUnknown%20Artist%5CUnknown%20Album%5CAmber%20Holcomb%20-%20A%20Moment%20Like%20This%20-%20Studio%20Version%20-%20American%20Idol%202013.mp3</string> 
     <key>File Folder Count</key><integer>-1</integer> 
     <key>Library Folder Count</key><integer>-1</integer> 
     </dict> 

這個XML我希望把它變成一個JsonArray

var myarray = {"TrackID":0, "Name":"American IDol 2013"...};

我發現瞭如何遍歷每個標籤,但我似乎無法包裝我的頭怎麼做到這一點。我正在考慮創建一個預定義的Json數組或者其他東西{"TrackID": "", "Name":""},並且當JSON完成時,我將它推入主JSON(如果我沒有正確解釋這個,很抱歉)。

有沒有辦法讓所有鍵和另一個與其餘的單個數組,然後將它們合併成一個JSON數組?我真的可以使用一些建議。

謝謝大家的幫助。

+0

你在尋找'$ .merge'嗎? – Ven 2013-04-05 22:38:33

+0

這裏是一個使用JavaScript插件的答案:http://stackoverflow.com/questions/4079352/jquery-plugin-for-serializing-xml-to-json 並使用PHP: http://stackoverflow.com/questions/8830599/php-convert-xml-to-json – Ehecatl 2013-04-05 22:38:58

+0

沒關係,我只是想通了。 var saveData = {}; saveData ['a'] = 2; saveData ['c'] = 1; – 2013-04-05 22:40:28

回答

1

我剛纔已經回答我的問題,我認爲......

var key1 = "keyname"; 
var val1 = "value"; 

var myarray = {}; 

myarray[key1] = val1; 

所以這裏的XML:http://honciano.com/kayokee/ci/uploads/xmlbackup2.xml

這是我用來創建我的JSON數組的代碼。我不知道這是否是正確的方式,但我已經開始工作。我遇到的問題是從「KEY」標籤獲取值,並在「KEY」標籤後獲取值,但不是「KEY」的標籤是「STRING」或「INTEGER」。

原來這就是我創建....

$.ajax({ 
       url: "<? echo base_url().'uploads/songlist.xml';?>", 
       dataType: 'HTML', 

       success: function(data){ 
        var myarray ={"track":[]}; 
        var key1 = ""; 
        var val1 = "";   
        var arrayContainer = {}; 
        var myCount = 0; 
        $(data).find("dict").children("dict").children("dict").each(function(){ 



         $(this).children().each(function(i, e){ 
          var nodeKey=(this).nodeName; 

          if(nodeKey=="KEY"){ 
           key1 = $(this).text(); 

          } else { 
           val1 = $(this).text(); 
           arrayContainer[key1] = val1; 
           myCount++; 
           //console.log("key1:"+key1+" - val1:"+val1+" - myCount:"+myCount); 
          }    

          if(myCount==14){ 
           myarray.track.push(arrayContainer); 
           arrayContainer={}; 
           myCount=0; 
           //console.log("cutoff new line"); 
          }   
         }); 


        }); 

        $.each(myarray.track, function(i, obj){ 
         $.each(obj, function(e, val){ 
          console.log("e:"+e+" - val:"+val); 
         }); 
        }); 


       } 
      }) 

它完全可行,它給我我想要的東西。謝謝大家!