【发布时间】:2010-09-06 13:58:07
【问题描述】:
这个主题之前已经提到过,但是距离上一个关于命名空间处理的问题已经有一段时间了。
是否有跨浏览器的解决方案可以在 Javascript 中按名称获取元素?
<?xml version="1.0" encoding="UTF-8"?>
<NS:response success="1" xmlns:NS="http://someURI/ns">
<NS:user firstname="foo" lastname="bar"></NS:user>
<NS:cookie value="2c0ea35bcac2e05d439609367a236b28" name="session"></NS:cookie>
</NS:response>
到目前为止我得到了什么:
var oXML = (new DOMParser()).parseFromString(xmlstring, "text/xml");
var root = oXML.documentElement;
var user = typeof(user=root.getElementsByTagName(root.prefix + ':user')[0]) === "undefined"
?root.getElementsByTagName('user')[0]
:user;
尚未在 IE 中测试,但如果有人有任何跨浏览器的解决方案,我很乐意听到。
其他注意事项:
- getElementsByTagNameNS() - 我试图避免指定命名空间/uri
- 在创建 XML 文档之前使用正则表达式去除命名空间
- 不使用命名空间 - 我有这个选项,但不想走那条路
【问题讨论】:
-
DOMParser() 在 IE 中肯定行不通,你必须去ActiveX/MSXML route。
-
+1。我记得,但这不是问题,围绕它编写代码很容易;如果
object.documentElement不是跨浏览器,那就更划算了:)
标签: javascript xml cross-browser xml-parsing