Очень простой способ решить эту проблему - создать собственный конвертер, например:
public class XMLEventsConverter implements Converter<XMLEvents> {
private Serializer serializer;
XMLEventsConverter(Serializer serializer){
this.serializer = serializer;
}
@Override
public XMLEvents read(InputNode arg0) throws Exception {
return null;
}
@Override
public void write(OutputNode node, XMLEvents xmlEvents) throws Exception {
for (XMLEvent event : xmlEvents.events) {
serializer.write(event, node);
}
}
}
, а затем использовать RegistryStrategy и связать класс XMLEvents с предыдущим конвертером:
private final Registry registry = new Registry();
private final Serializer serializer = new Persister(new RegistryStrategy(registry));
....
registry.bind(XMLEvents.class, new XMLEventsConverter(serializer));
Таким образом, полученный XML является желаемым.Обратите внимание, что метод read в XMLEventsConverter просто return null
, на случай, если вам нужно перестроить объект из XML-файла, вы должны правильно его реализовать.
С уважением!