在我的系统中,我不得不将一个大的javascript ajax系统移动到接缝。我通过添加
来正常工作xml = (new DOMParser()).parseFromString(s, "text/xml");
现在我的问题是我刚刚注意到domparser由于某种原因改变了xml元素的顺序。我把它缩小了,它必须是这样。因为这些元素在离开服务器时按特定顺序排序,所以dom解析器重组不是一件好事。谁看过这个?有谁知道如何解决它?
答案 0 :(得分:1)
我在IE 9 RC 1标准模式中试图解决另一个问题(XMLHttpRequest对象返回MSXML ActiveX对象,即使在标准模式下也是如此。功能检测看到DOMParser并且这两个文档不兼容所以我认为使用DOMParser可以做到这一点)
在IE 9 RC 1中重现问题的示例代码:
var sXML = "<TEST ID=\"124\" TITLE=\"TitleValue\" DATE=\"2011-02-24T00:00:00\" STATUS=\"Processing\" EMPNAME=\"Smith, Sam\" STATUSCODE=\"P\" ROWNUM=\"1\" />";
var dpParser = new DOMParser();
var xdDoc = dpParser.parseFromString(sXML, "text/xml");
var xsSerialize = new XMLSerializer();
var sNewXML = xsSerialize.serializeToString(xdDoc);
alert("Original XML:\n" + sXML + "\n\nNew XML:\n" + sNewXML);
警报的输出......
原始XML:
<TEST ID="124" TITLE="TitleValue" DATE="2011-02-24T00:00:00" STATUS="Processing" EMPNAME="Smith, Sam" STATUSCODE="P" ROWNUM="1" />
新XML:
<TEST ROWNUM="1" STATUSCODE="P" EMPNAME="Smith, Sam" STATUS="Processing" DATE="2011-02-24T00:00:00" TITLE="TitleValue" ID="124" />
更新: 我已经向微软提交了一份有关此问题的IE 9错误报告,他们已将其解析为“按设计”。
如果在IE 9中使用DOMParser.parseFromString函数时期望XML属性按特定顺序排列,则需要明确地获取属性,而不是简单地迭代它们。
答案 1 :(得分:0)
DomParser
实现都不会尊重它。我建议你再看看你的代码。
答案 2 :(得分:0)
对于仍然遇到此问题的任何人,我通过编写自己的XML解析器来解决它。我一直停止使用DomParser,从那时起,我已经改为json,根本没有问题。
感谢