0

所以我有这个来自 Winamp 的 XML

<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>

我想把它变成一个 JsonArray

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

我发现了如何遍历每个标签,但我似乎无法理解如何做到这一点。我正在考虑创建一个预定义的 Json 数组或其他东西{"TrackID": "", "Name":""},当 JSON 完成后,我将其推送到主 JSON 中(如果我没有正确解释这一点,请见谅)。

有没有办法让所有键组成一个数组,其余的组成一个数组,然后将它们合并到一个 JSON 数组中?我真的可以使用一些建议。

谢谢大家的帮助。

4

1 回答 1

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);
                        });
                    });


                }
            })

它完全有效,它给了我我想要的东西。谢谢大家!

于 2013-04-05T22:42:24.247 回答