Java - Генерация XML для устаревшей системы - PullRequest
0 голосов
/ 20 февраля 2012

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

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

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

Ответы [ 3 ]

2 голосов
/ 20 февраля 2012

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

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

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

1 голос
/ 20 февраля 2012

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

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

0 голосов
/ 20 февраля 2012

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

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

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