6

我正在尝试使用以下方式读取 XML 响应getElementsByTagName

var rows = items.responseXML.getElementsByTagName("z:row");

for (var i=0; i<rows.length; i++)
{
//do something
}

上面的代码在 Firefox 和 IE 中运行良好,但在 chrome 中它抛出 null .. 我的意思是它没有得到任何数据.. 当我总是在 chrome 中alertrows.length我时。0

然后我在谷歌搜索并了解问题在于xsd:element,然后我改为"z:row""row"。然后它在 Chrome 中工作,但 Firefox 和 IE返回0.rows.length

有没有适用于所有浏览器的方法?

4

2 回答 2

2

这就是我使用的:

function byTagNS(xml,tag,ns) {
    return xml.getElementsByTagNameNS
      ? xml.getElementsByTagNameNS(ns,tag)
      : xml.getElementsByTagName(ns+":"+tag);
}

在你的情况下:

byTagNS(responseXML, "row", "z")
于 2013-07-05T10:59:33.350 回答
0

如果您不关心名称空间,那么您可以使用以下内容:

xml.getElementsByTagNameNS("*", "yourElementHere")

这将获取具有所需名称的任何元素,无论它具有哪个命名空间或它是否有任何命名空间。此外,这应该可以在不同的浏览器中按预期工作。

请参阅文档链接

于 2017-07-07T16:04:08.280 回答