Javascript - 将XML加载到多维数组中

时间:2012-07-30 10:24:32

标签: javascript xml html5

我一直在用HTML5和javascript创建游戏,但遇到了一个问题。

游戏使用磁贴系统加载地图。目前我的地图保存在多维数组中,如下所示:

var map = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
            [1, 3, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
            [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
            [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
            [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
            [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

我想通过使用XML文件来更新数组来添加移动级别。

我的XML文件目前看起来像这样:

<TileMaps>
<Level level="1">
<map>[  [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 3, 0, 0, 0, 0, 2, 4, 0, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
</map>
</Level>
<Level level="2">
<map>[  [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 3, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
    [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
    [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
    [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
    [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
</map>
</Level>
</TileMaps>

如果有人可以帮我将level =“1”加载到我的地图变量中,那就太棒了。

由于

2 个答案:

答案 0 :(得分:0)

不要使用xml,请使用json。这是一个关于它的内容的链接,http://www.json.org/

虽然不是完全精确,但将json视为javascript的子集是非常安全的。

例如:

{
    "levels":[ 
        [    
            [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
            [1, 3, 0, 0, 0, 0, 2, 4, 0, 1],
            [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        ],


        [
            [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
            [1, 3, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
            [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
            [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
            [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
            [1, 0, 0, 0, 0, 0, 2, 0, 4, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        ]
    ]
}

使用http://jsonlint.org验证json。

答案 1 :(得分:0)

对于任何想知道的人,我使用以下代码解决了这个问题:

req=new XMLHttpRequest();
req.open("GET","my.xml",false);
req.send();
xmlDoc = req.responseXML;
map = JSON.parse(xmlDoc.getElementsByTagName('map')[0].firstChild.nodeValue);