javascript parseFromString изменение порядка элементов в XML-документе - PullRequest
1 голос
/ 15 декабря 2010

в моей системе мне пришлось переместить большую систему javascript ajax в шов.я получил это, чтобы работать правильно, добавив

xml = (new DOMParser()).parseFromString(s, "text/xml");

, теперь моя проблема в том, что только что привлек мое внимание, что domparser по какой-то причине меняет порядок элементов xml.Я сузил его, это должно быть так.так как эти элементы сортируются в определенном порядке, когда он покидает сервер, реорганизация dom-парсера не очень хорошая вещь.кто-нибудь видел это?Кто-нибудь знает, как это исправить?

Ответы [ 3 ]

1 голос
/ 11 февраля 2011

Я сталкивался с этой проблемой в стандартном режиме 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

0 голосов
/ 22 марта 2012

Для тех, кто все еще испытывает эту проблему, я решил ее, написав свой собственный анализатор XML. я перестал использовать DomParser все вместе и с этого времени я перешел на json, у которого вообще нет проблем.

спасибо

0 голосов
/ 15 декабря 2010

Я был бы очень удивлен, если это так. Порядок узлов определяется как значимый в XML, и я не могу поверить, что реализация браузером DomParser не смогла бы его соблюдать. Я предлагаю вам еще раз взглянуть на свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...