首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从js文件创建关联数组,而不是xml文件

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

Stack Overflow用户
提问于 2013-11-23 12:44:39
回答 1查看 101关注 0票数 0

我一直在编写一个函数getxml,它创建了一个关联数组,该数组包含它在xml文件中找到的所有相册/曲目:

代码语言:javascript
运行
复制
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文件的格式如下:

代码语言:javascript
运行
复制
<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文件的格式如下:

代码语言:javascript
运行
复制
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":""},
        ]
    },

]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-23 13:11:57

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

代码语言:javascript
运行
复制
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];
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20162449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档