繁体   English   中英

从js文件而不是xml文件创建关联数组

[英]Creating an associative array from a js file as opposed to a xml file

我一直在研究一个函数getxml ,它创建了一个在xml文件中找到的所有专辑/曲目的关联数组:

function XMLload() {
    jQuery.post(url, function(data) {
        getxml(data);
    }, 'xml');
}

function dataFromTag(node, t) {
    var d = node.getElementsByTagName(t);
    if (d.length == 0) return ('');
    return (d[0].firstChild.nodeValue);
}

jQuery(document).ready(XMLload);

var url = 'music.xml';

function getxml(xmldoc) {
xmlalbums = xmldoc.getElementsByTagName('album');

for (var i = 0; i < xmlalbums.length; i++) {
    title = dataFromTag(xmlalbums[i], 'title');
    artist = dataFromTag(xmlalbums[i], 'artist');
    artwork = dataFromTag(xmlalbums[i], 'artwork');

    var xmltracks = xmlalbums[i].getElementsByTagName('track');

    var tracks = []

    for (var j = 0; j < xmltracks.length; j++) {
        song = dataFromTag(xmltracks[j], 'title');
        mp3 = dataFromTag(xmltracks[j], 'mp3');
        tracks[song] = mp3;
    }
    albumlist[title] = [artist, artwork, tracks];
}

// call pageLoad();
pageLoad();
}

xml文件采用以下格式:

<albums>
    <album>
        <title></title>
        <artist></artist>
        <artwork></artwork>
        <track>
            <title></title>
            <mp3></mp3>
        </track>
        <track>
            <title></title>
            <mp3></mp3>
        </track>
        <track>
            <title></title>
            <mp3></mp3>
        </track>
        <track>
            <title></title>
            <mp3></mp3>
        </track>
    </album>
</albums>

我现在尝试使用* .js文件执行相同的操作,并提供以下详细信息。 但我不知道如何重新解释代码,以避免更改我的其余代码。 知道我怎么能做到这一点? js文件采用以下格式:

var albums=
[
    {   "title":"",
        "artist":"",
        "artwork":"",
        "tracks":[
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
        ]
    },
    {   "title":"",
        "artist":"",
        "artwork":"",
        "tracks":[
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
        ]
    },

]

您的var albums有几个问题(额外的逗号,请查看http://jsonlint.com/以验证它)。 但除此之外,它是一个有效的JSON对象。

var albums=
[
    {   "title":"",
        "artist":"",
        "artwork":"",
        "tracks":[
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""}
        ]
    },
    {   "title":"",
        "artist":"",
        "artwork":"",
        "tracks":[
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
            {"title":"","mp3":".mp3",
            "lyrics":""},
        ]
    }
];

for (var i = 0; i < albums.length; i++) {
    title = albums[i].title;
    artist = albums[i].artist;
    artwork = albums[i].artwork;

    var tracks = []

    for (var j = 0; j < albums[i].tracks.length; j++) {
        song = albums[i].tracks[j].title;
        mp3 = albums[i].tracks[j].mp3;
        tracks[song] = mp3;
    }
    albumlist[title] = [artist, artwork, tracks];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM