我目前使用以下代碼以對象封成一個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);
}
將會產生以下的頭
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
我的期望的輸出是由JAXB編組產生XML頭以下
<?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' 。 –
關於MOXy?你正在使用哪個版本? –
沒有MOxy。我認爲該屬性與Java實現一起使用。 –