В настоящее время я использую следующий код, чтобы мобилизовывать объект в XML-строкуИзменение XML-заголовок, полученный с помощью ИАС JAXB
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);
}
который производит следующий заголовок
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Мой требуемый выход следующие
<?xml version=\"1.0\"?>
добавляя это к ИАС
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE);
marshaller.setProperty("com.sun.xml.bind.xmlHeaders", "<?xml version=\"1.0\"?>");
Я получаю
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><?xml version="1.0"?>
и изменить свойство JAXB_FRAGMENT в TRUE, удаляет заголовок целиком. Я слежу за нитью JAXB - Remove 'standalone="yes"' from generated XML, пытаясь решить проблему, но до сих пор мне не повезло. Может кто-нибудь, пожалуйста, дать мне некоторое представление о том, как получить желаемый заголовок у маршаллера JAXB?
я получаю 'PropertyException' при установке' sun' свойство , –
На MOXy? Какую версию вы используете? –
No MOxy. Я предположил, что свойство было использовано с реализацией Java. –