我目前正在使用以下代码将对象编组为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);
}
这会产生以下标题
我想要的输出如下
通过将此添加到marshaller
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE);
marshaller.setProperty("com.sun.xml.bind.xmlHeaders", "<?xml version=\"1.0\"?>");
我收到
并将JAXB_FRAGMENT属性更改为TRUE将完全删除标头.我一直在跟踪JAXB – Remove ‘standalone=”yes”‘ from generated XML线程试图解决问题,但到目前为止我没有运气.有人可以给我一些关于如何从JAXB marshaller获取所需标题的见解吗?