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