Я сталкивался с этой проблемой в стандартном режиме 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" />
Обновление:
Я подал отчет об ошибке в Microsoft для IE 9 по этой проблеме, и они решили его как «по проекту».
Если вы ожидаете, что ваши атрибуты XML в определенном порядке при использовании функции DOMParser.parseFromString в IE 9, вы захотите явно получить атрибуты, а не просто выполнять их итерацию.
Следующее было сообщением об ошибке:
https://connect.microsoft.com/IE/feedback/details/645091/domparser-parsefromstring-in-ie-9-rc-1-rearranges-the-attributes-of-the-xml-node-passed-in