我在尝试通过跨浏览器的 javascript 将多个命名空间附加到 XML 元素时有点卡住了;我已经尝试了大约十几种不同的方法,但都无济于事。
我通常使用普通的旧 javascript,但为了保持这个例子简短,这就是我正在做的事情将通过 jQuery 完成:
var soapEnvelope = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"></soapenv:Envelope>';
var jXML = jQuery.parseXML(soapEnvelope);
$(jXML.documentElement).attr("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
在 Chrome 和 FF 中,这按预期工作,结果如下:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
但是在 IE9 中,我得到这样的结果:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:NS1="" NS1:xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
如果没有 IE9 将这个 NS1 前缀添加到我的命名空间,我找不到添加这个命名空间属性的方法。此外,如果我尝试将此结果传递回 $.parseXML(result) ,则会收到格式错误的 XML 异常。
我是否误解了与在 IE 中声明命名空间的方式有关的事情,或者任何人都可以建议一种我可以在浏览器中获得一致结果的方法吗?
提前致谢