I need to write a slightly complex XML using Spring Batch. Can anyone please help me with the appropriate Spring configuration?
Below is the Output the process requi
The solution to this problem is to implement Header/Footer Callback classes provided by Spring (As Michael Minella suggested in the comments below.), StaxWriterCallback class in my case. Below is How I've implemented it.
org.test.model.xml.User
And below are the Footer/Header callback classes implementation
public class UserXMLHeaderCallBack implements StaxWriterCallback{
@Override
public void write(XMLEventWriter writer) throws IOException {
try{
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
Attribute id = eventFactory.createAttribute("ID", "someId");
Attribute name = eventFactory.createAttribute("NAME", "someName");
List attributeList = Arrays.asList(id, name);
List> nsList = Arrays.asList();
XMLEvent event = eventFactory.createStartElement("", "", "USERLIST",attributeList.iterator(), nsList.iterator());
writer.add(event);
}catch(XMLStreamException e){
System.err.println("Something went nuts!!!");
}
}
}
Footer class
public class UserXMLFooterCallBack implements StaxWriterCallback{
@Override
public void write(XMLEventWriter writer) throws IOException {
try{
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent event = eventFactory.createEndElement("", "", "USERLIST");
writer.add(event);
}catch(XMLStreamException e){
System.err.println("Something went nuts!!!");
}
}
}
And I got the desired Output!