У меня есть требование написать пакет пружины, который читает из базы данных и записывает в XML. Я написал партию, но я столкнулся с проблемой. Я должен написать XML в формате ниже,
Например,
<Definition>
<item>
<name></name>
</item>
<Item>
<name></name>
</Item>
</Definition>
здесь <Definition>
- это элемент root, который должен быть напечатан только один раз, а <item>
может быть от 1 до п и это не root в XSD. Я использую StaxEventItemWriter для этого.
Я могу использовать headerCallback для <Definition>
, но проблема, с которой я сталкиваюсь, заключается в том, чтобы установить <item>
в classesToBeBound, поскольку это не элемент root. сделать это как root, тогда jaxb вставляет пространство имен по умолчанию в xml.
Writer выглядит следующим образом
ItemWriter extends StaxEventItemWriter<item>{
Jaxb2Marshaller marshaller = new Jaxb2Marshaller ();
marshaller .setClassesToBeBound(Item.class);
this.setMarshaller(marshaller );
this.setOverWriteOutput(false);
}```