Java - Генерация XML для устаревшей системы

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

Для любых здравомыслящих форматов XML я бы просто использовал Xstream или другую сериализационную библиотеку Java XML, но в этой унаследованной системе есть много странных правил, таких как "этот узел должен быть исключен, если значение меньше десяти" и "форматирование даты в узел x зависит от значения узла y". Есть и другие странные правила, но этого должно быть достаточно, чтобы понять.

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

3 ответа

В основном вам нужна некоторая логика во время сериализации. Я предполагаю, что структура объекта в памяти не отражается напрямую в структуре XML? Альтернативы:

  1. Используйте StAX и распространяйте методы чтения и записи внутри объектов.
  2. Используйте JAXB и вставьте пользовательскую сериализацию.

Даже не думайте выражать свою собственную логику в чем-то кроме Java, то есть в какой-то "супер" среде.

Я не уверен, если это то, что вы ищете, но, возможно, попробуйте XML Binding, как JAXB...

Другими словами: вы можете сгенерировать библиотеку классов из вашей xsd-схемы, а затем построить свой объектный граф в коде java, а затем сериализовать его за один вызов xml.

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

http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php

Другие вопросы по тегам