Alterando o cabeçalho XML produzido pelo marshaller JAXB
Atualmente, estou usando o código a seguir para empacotar um objeto em uma seqüência xml
JAXBContext context;
try {
context = JAXBContext.newInstance(heartbeat.getClass());
StringWriter writer = new StringWriter();
Marshaller marshaller = context.createMarshaller();
heartbeat.setHeader(header);
heartbeat.setHeartbeatEvent(event);
marshaller.marshal(heartbeat, writer);
String stringXML = writer.toString();
return stringXML;
} catch (JAXBException e) {
throw new RuntimeException("Problems generating XML in specified "
+ "encoding, underlying problem is " + e.getMessage(),
e);
}
Qual produz o seguinte cabeçalho
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Minha saída desejada é a seguinte
<?xml version=\"1.0\"?>
Adicionando isso ao marshaller
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE);
marshaller.setProperty("com.sun.xml.bind.xmlHeaders", "<?xml version=\"1.0\"?>");
eu recebi
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><?xml version="1.0"?>
e alterar a propriedade JAXB_FRAGMENT para TRUE remove o cabeçalho completamente. Eu tenho acompanhado oJAXB - Remover 'standalone = "yes"' do XML gerado thread tentando resolver o problema, mas eu não tive sorte até agora. Alguém pode me dar algumas dicas sobre como obter o meu cabeçalho desejado do marshaller JAXB?