2014-03-26 2 views
1

Я использую XMLBeans для генерации кода клиента Java из двух очень похожих XSD. Сгенерированные XMLBeans классы входят в два параллельных пакета. Затем я извлекаю данные из базы данных для взаимодействия с сгенерированными классами для создания двух (опять же, почти идентичных) выходных файлов XML. Несмотря на то, что XSD примерно на 95% одинаковы, между ними нет определенной взаимосвязи - никакого наследования или чего-либо еще. К сожалению, эти устаревшие XSD использовались годами, и мне не разрешено их модифицировать.XMLBeans - Как обрабатывать почти идентичные устаревшие XSD?

Моя проблема заключается в том, что, несмотря на то, что большинство данных и структур точно совпадают между двумя файлами XML, я не могу понять, как избежать тонны повторяющегося кода, чтобы вылить данные на два независимых набора Сгенерированные XMLBeans классы. Я могу создать общий набор бизнес-объектов между DAO и структурами XML. Но мне все равно придется сопоставлять каждый из этих объектов с соответствующими генерируемыми типами XML, и это кажется невероятно утомительным и неэффективным.

Я не хочу изменять сгенерированный Java-код XMLBeans (например, реализовать общий интерфейс), и я не могу изменить XSD. Я посмотрел на такие шаблоны, как Adapter и Bridge, но я не думаю, что они заставили меня присутствовать, чтобы избежать дублирования кода/усилий. Есть ли элегантное дизайнерское решение, которое мне не хватает?

+0

Трудно определить, какую часть вы можете изменить и то, что вы не можете. Некоторый код даст лучшую идею. Вы пробовали JAXB? –

+0

+1 У нас только одна и та же проблема, и было бы неплохо иметь достойное решение. –

ответ

1

Может быть, вы могли бы использовать XmlCursor родовой добавить содержимое в подобные узлы, см How to add a node to XML with XMLBeans XmlObject

+0

Это кажется очень громоздким, но я никогда не мог найти лучшего решения. –

Смежные вопросы