Форматирование Eclipse XML меняет порядок тегов? - PullRequest
1 голос
/ 27 марта 2012

Я только что заметил что-то странное.Если у меня есть этот XML:

<level number="7" background="background_5">

и я нажимаю CTRL-SHIFT-F (Format), код неожиданно меняется на следующее:

<level background="background_5" number="7" >

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

Есть ли причина, кроме того, что она упорядочена по алфавиту, что она отформатирована таким образом, и, что более важно, как ее отключить?

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

В спецификации XML прямо указано, что порядок атрибутов не гарантируется:

Обратите внимание, что порядок спецификаций атрибутов в начальном теге или теге пустого элемента не имеет значения.

Возможно, вы найдете способ изменить поведение XML-форматера в Eclipse, но наиболее надежным решением является доступ к атрибутам по имени, а не по индексу. В противном случае ваш код останется чувствительным к изменениям, которые совершенно законны в соответствии со спецификацией XML.

Смотри также:

1 голос
/ 27 марта 2012

Я согласен с ответом Эли Ачеркана о том, что он не полагается на порядок атрибутов при обработке документов XML.

Сказав это, можно иметь стилистические причины для наличия атрибутов в определенном порядке.В некоторых случаях это также может облегчить чтение документа XML для группировки связанных атрибутов.

Если посмотреть на предпочтения форматирования Eclipse XML, я не вижу ничего, связанного с порядком атрибутов.

Eclipse XML Formatting Preferences

Из вашего примера похоже, что поведение может заключаться в сортировке атрибутов по алфавиту, но я не проводил тестов, чтобы подтвердить эту теорию.Другая вещь, которую он мог бы сделать, это сортировка атрибутов по порядку их появления в XSD / DTD.Возможно, вы захотите проверить эту теорию, поскольку это может дать вам некоторый контроль над порядком.

Вы также можете открыть запрос на расширение для предпочтения управления этим поведением форматера.

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