Zmiana nagłówka XML wyprodukowanego przez organizatora JAXB
Obecnie używam następującego kodu do zebrania obiektu w łańcuch 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);
}
Który wytwarza następujący nagłówek
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Moje pożądane wyjście jest następujące
<?xml version=\"1.0\"?>
Dodając to do marshallera
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE);
marshaller.setProperty("com.sun.xml.bind.xmlHeaders", "<?xml version=\"1.0\"?>");
Otrzymałem
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><?xml version="1.0"?>
i zmiana właściwości JAXB_FRAGMENT na TRUE całkowicie usuwa nagłówek. ŚledziłemJAXB - Usuń 'standalone = "tak"' z wygenerowanego XML wątek próbujący rozwiązać problem, ale do tej pory nie miałem szczęścia. Czy ktoś może mi dać wgląd w to, jak uzyskać pożądany nagłówek z serwera JAXB?