Классы, созданные с помощью Castor (XML Marshalling) - XSD недоступен - PullRequest
0 голосов
/ 04 февраля 2012

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

Предыдущая команда использовала сгенерированные Castor классы для Маршалла и Унмаршалла данных.

Теперь у меня есть новое требование, которое требует от меня добавить некоторые дополнительные (но необязательные) поля в этот XML.Однако я понял, что предыдущая команда, возможно, вообще не проверяла XSD, и у меня нет возможности связаться с ними.

XSD наверняка был большим и сложным, поскольку он отвечает за создание около 50 классов.Поэтому повторное написание XSD будет подвержено ошибкам, а также риску того, что я могу в итоге создать XML-файлы, которые теперь совместимы со старым XML.

Другой альтернативой, о которой я подумал, было использование такого инструмента, как XMLШпионите и попытайтесь выполнить обратный инжиниринг XSD из XML, однако это тоже звучит немного сложно, поскольку мне нужно будет провести обратный инжиниринг 20 нечетных XML для генерации XSD, а затем объединить все эти XSD в один, так как XML имел несколько необязательных разделов.В этом подходе все еще возможен элемент ошибки.

Лучший вариант, который я могу придумать, - это обратный инжиниринг классов в XSD - однако, предположительно, Castor не поддерживает эту функцию.Поэтому у меня нет средств для преобразования этих сгенерированных Castor классов обратно в XSD!Хотя классы, сгенерированные в Castor, действительно имеют некоторые специфические для Castor методы, по сути они являются Pojos, если специфические для Castor методы игнорируются!

Есть ли у нас какие-либо предложения по получению или генерации XSD из классов Java?Есть ли у нас другие предложения по решению обсуждаемых мной проблем?

Спасибо.

1 Ответ

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

Просто обновление, хотя я не достиг 100% от того, что искал, я смог успешно перепроектировать XSD с помощью инструмента JAXB schemagen.

Просто обратите внимание, что Castor генерирует XXXDescriptor с каждымкласс, поскольку он НЕ сопоставляется с фактическим XSD, не передает классы XXXDescriptor в качестве входных данных для инструмента schemagen.

Инструмент schemagen работает с методами получения и игнорирует такие методы, как validate, marshall и unmarshall Кастора.

Так что на данный момент все выглядит довольно обнадеживающе, по сравнению с ситуацией, в которой я находился, когда впервые опубликовал вопрос.

Спасибо.

...