2012-02-04 2 views
0

Недавно я перешел в проект, где я заметил, что существует определенное требование хранить некоторые данные в формате XML.Классы, созданные с помощью Castor (XML Marshalling) - XSD Недоступно

Предыдущая команда использовала классы Castor для Marshall и Unmarshall.

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

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

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

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

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

спасибо.

ответ

0

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

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

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

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

Спасибо.