Порядок атрибутов XML после обработки DOM - PullRequest
40 голосов
/ 07 апреля 2009

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

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

Есть ли какой-нибудь "простой" способ или мне нужно определить собственную таблицу стилей преобразования XSLT, чтобы указать выходные данные и изменить весь входной XML-файл?

Обновление Я должен поблагодарить все ваши ответы. Ответ кажется теперь более очевидным, чем я ожидал. Я никогда не обращал внимания на порядок следования атрибутов, так как раньше никогда не нуждался в этом.

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

Я только что разработал небольшое приложение для объединения исходного файла (общего для всех проектов) с определенными частями каждого проекта (изменения значения некоторых атрибутов), поэтому файл для конкретного проекта получает обновления базового (новые определения сигналов тревоги). или исправлены некоторые значения атрибутов). Моя основная мотивация требовать упорядоченных атрибутов - иметь возможность проверять выходные данные приложения снова и снова в исходном файле с помощью инструмента сравнения текста (такого как Winmerge). Если формат (в основном порядок атрибутов) остается прежним, различия легко заметить.

Я действительно думал, что это возможно, поскольку программы обработки XML, такие как XML Spy, позволяют редактировать файлы XML и применять некоторые порядок (режим сетки). Может быть, я выбрал одну из этих программ, чтобы вручную изменить файл вывода.

Ответы [ 11 ]

0 голосов
/ 29 июня 2012

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

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

Кажется, что Решение Алена Паннетье - это путь.

Также вы можете взглянуть на DecentXML ; он дает вам полный контроль над форматированием XML, даже если он не совместим с DOM. Особенно полезно, если вы хотите изменить какой-то отредактированный вручную XML, не теряя форматирование.

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