此主题之前已被触及,但自上一个关于命名空间处理的问题以来已经有一段时间了。
是否有跨浏览器解决方案在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中测试,但如果有人有任何跨浏览器解决方案,我愿意听。
其他注意事项:
答案 0 :(得分:1)
您可以尝试使用另一种方法,将XML转换为JSON服务器端,使用类似http://code.google.com/p/xml2json-xslt/的通用XSLT,并仅向浏览器提供JSON。
它会在服务器响应上增加一小部分开销,但与浏览器渲染XML所花费的代码和时间相比没有什么比较。
除了IE之外,凭借其令人印象深刻的msxml,我认为在普通浏览器中阅读XML与JSON相比真的很痛苦。
答案 1 :(得分:0)
使用像jQuery或Prototype这样的JS框架来实现这种ajax脚本会有所帮助。
您还可以执行(示例)$("user[name=foo]")
,它将选择名称为= foo的所有用户标记。
这是许多用户设法通过名称处理元素选择的解决方案。并且$("tag[name=foo]")
是crossbrowser。