解析 XML 命名空间?

IT技术 javascript xml ajax namespaces
2021-02-22 06:24:28

使用 JavaScript/Ajax?

我正在尝试从以下位置提取值:

<yweather:astronomy sunrise="6:34 am"   sunset="8:38 pm"/>

寻找类似的东西:

var response = transport.responseXML.getElementsByTagName("channel");
sunrise = response[0].getElementsByTagName("yweather:astronomy").item(0).Attributes["sunrise"].Value;

但到目前为止没有任何效果。:'( 谢谢。

1个回答

有一个特殊版本的getElementsByTagNamefor 命名空间:getElementsByTagNameNS.

例如:

var response = transport.responseXML.getElementsByTagName("channel");
var sunrise = response[0].getElementsByTagNameNS("[Namespace URI]", "astronomy")[0].getAttribute("sunrise");

...命名空间[Namespace URI]的 URI在哪里yweather

史蒂夫

在 MSXML 中,您可以在 XML DOMDocument 对象上设置“SelectionNamespaces”属性,然后将非标准的“selectNodes”(或“selectSingleNode”)方法与 XPath 选择器一起使用。有关示例请参见xml.com/pub/a/2002/06/05/msxml4.html
2021-05-01 06:24:28
@annakata:出于兴趣,你怎么能在 IE 中做到这一点?
2021-05-15 06:24:28
您可能需要转义冒号 "yweather\\:astronomy"
2021-05-15 06:24:28
我认为你可以在 IE 中使用 getElementsByTagName("yweather:astronomy") 。此外,Google Feeds API 具有跨浏览器实现。也许你可以使用它,或者类似的东西:code.google.com/apis/ajaxfeeds/documentation/...
2021-05-17 06:24:28
@NickFitz:啊,我明白了。谢谢!
2021-05-20 06:24:28