現在、次のコードを使用してオブジェクトを 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"?>
私の望ましい出力は次のとおりです
<?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 threadに従っていますが、これまでのところ運がありません。JAXBマーシャラーから目的のヘッダーを取得する方法について、誰かが私に洞察を与えることができますか?