Классы, созданные кастором (маршалинг XML) - XSD недоступен

Недавно я перешел в проект, где, как я заметил, есть особое требование хранить некоторые данные в формате XML.

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

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

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

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

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

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

Спасибо.


person Y123    schedule 04.02.2012    source источник


Ответы (1)


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

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

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

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

Спасибо.

person Y123    schedule 23.02.2012