JavaScript 读取 XML 是完全错误的

JavaScript reads XML totally wrong

本文关键字:错误 读取 XML JavaScript      更新时间:2023-09-26

我正在开发一个HTML5/Canvas游戏引擎,但我被困住了。引擎通过图块集绘制地图,并从 XML 文档中读取地图数据,如下所示:

<map>
    <layer id="-1">
        <row>0,0,0</row>
        <row>1,1,1</row>
        <row>0,0,0</row>
    </layer>
    <layer id="1">
        <row>0,0,0</row>
        <row>1,1,1</row>
        <row>0,0,0</row>
    </layer>
</map>

以及将数据加载到二维数组中的 JavaScript:

var layers = xml.getElementsByTagName("layer");
for(var i in layers)
{
    var rows = layers[i].childNodes;
    for(var j in rows)
    {
        array[i][j] = rows[j].nodeValue;
    }   
}

问题:返回的数据只是"null"、"和"undefined"的大杂烩。此外,数组似乎比必要的要小,因为在我遍历所有值之前,我检查了节点数(使用 length 属性(,并且它总是比实际的节点数更多。

  1. 使用 textContent 而不是 nodeValue 。前者返回正确的值,例如 "0,0,0"
  2. 由于文本节点也是子节点,因此应跳过它们(检查节点的nodeType(。这些正在用孔填充您的阵列,并使它们比需要的更大。文本节点基本上是缩进的空格。解决此问题将需要额外的计数器。
  3. 使用正常的for循环,而不是for in循环。

http://jsfiddle.net/DhKJr/