2015-08-27 5 views
0

Я хочу знать, как отключить сортировку атрибутов в элементе xml. У меня есть документ, как это:как отключить сортировку атрибутов элемента xml

 Document document = builder.newDocument(); 
     Element rootElement = document.createElement("ROOT"); 
     document.appendChild(rootElement); 

     // set attribute to root element 
     Attr attr = document.createAttribute("ID"); 
     attr.setValue("1"); 
     rootElement.setAttributeNode(attr); 
     Attr attr = document.createAttribute("CODE"); 
     attr.setValue("A"); 
     rootElement.setAttributeNode(attr); 

После выполнения программы я получил результат:

 <ROOT CODE="A" ID="1"></ROOT> 

Моего вопрос даже я поставил идентификатор в качестве первого атрибута атрибута коды наступающего первым. Мне нужно, чтобы идентификатор был первым для моего требования к серверу. Я использую java для создания этого.

ответ

0

Порядок атрибутов официально не значим в XML, и инструменты не требуются для его обслуживания. (На самом деле часто бывают хорошие показатели производительности, чтобы не делать этого). Вам действительно нужно переписать свой код, чтобы он не требовал, чтобы атрибуты поступали в каком-либо конкретном порядке.

+0

хорошо, технически сервер вышел из моего контроля и ничего не может исправить. :(спасибо за ответ – RiceBunny

+0

Если сервер чувствителен к порядку атрибутов и утверждает, что обрабатывает XML, он не работает. Отправьте отчет об ошибке или отбросьте его в пользу одного, написанного правильно. – keshlam

0

Если вы не можете получить исправление программного обеспечения получателя, в последних версиях Saxon есть опция на сериализаторе для управления порядком атрибутов на выходе.

<xsl:output saxon:attribute-order="ID CODE"/> 

(Тем не менее, если они не в состоянии принять атрибуты в любом порядке, это, вероятно, означает, что они пытаются обрабатывать XML без использования XML-совместимого парсер, например, с помощью регулярных выражений хакерства, и таким образом, это, вероятно, выиграл» это будет конец ваших неприятностей).

+0

спасибо, сэр, я попробую это один. – RiceBunny

Смежные вопросы