无法阅读属性' childNodes'未定义的

时间:2014-11-02 08:36:06

标签: php xml dom

我正在运行对xml文件的请求,如下所示:

function load()
{
    var request = new XMLHttpRequest();
    request.open("GET", "response.xml", true);
    request.send();

    request.onreadystatechange = function ()
    {
        if (request.readyState == 4)
        {
            var x = request.responseXML;
            var y = x.getElementsByTagName("Limits")[0].childNodes[1];
            var z = y.getElementsByTagName("Limits")[0].childNodes[0];
            document.write(z);
        }
    };
}

xml response.xml就是这样:

<Factory>
    <Limits>
        <Point X="92" Y="489">hahahahff</Point>
        <Point X="570" Y="487">1111</Point>
        <Point X="570" Y="138">33333</Point>
        <Point X="92" Y="140">44444444</Point>
        <Point X="92" Y="139">5555555</Point>
    </Limits>
    <Cells>
        <Cell>
            <Point X="358" Y="138"/>
            <Point X="361" Y="487"/>
            <Point X="570" Y="487"/>
            <Point X="570" Y="138"/>
            <Point X="358" Y="138"/>
        </Cell>
        <Cell>
            <Point X="311" Y="139"/>
            <Point X="311" Y="488"/>
            <Point X="92" Y="489"/>
            <Point X="92" Y="140"/>
            <Point X="311" Y="139"/>
        </Cell>
    </Cells>
</Factory>

我收到此错误:

  

无法读取属性&#39; childNodes&#39;未定义的

为什么会这样?

我想要实现的是在不使用POINT的情况下打印第二个getElementsByTagName("POINT")[1]节点的值。

基本上我想进入&#39; Limits节点,并打印第二个值。

1 个答案:

答案 0 :(得分:1)

这一行:

var z=y.getElementsByTagName("Limits")[0].childNodes[0];

应该是:

var z=x.getElementsByTagName("Limits")[0].childNodes[0];

x是前一行的内容,因此它已经是Limits的孩子了。因此,这一行试图在Limits的子项内找到Limits,并且没有这样的嵌套Limits