我需要追加二進制數據到文件,但在此數據是一個XML頭。整個文件不會是正確的XML文件,但它必須像下列正確的XML標題:追加二進制數據到序列化的XML頭
<EncryptedFileHeader>
<Algorithm>name</Algorithm>
<KeySize>256</KeySize>
<SubblockLength>64</SubblockLength>
<CipherMode>ECB</CipherMode>
<sessionKey>sessionKey</sessionKey>
</EncryptedFileHeader>
*binary data*
XML頭我JAXB編組容易,並且更容易將做用base64和存儲在添加此二進制數據注意在xml中。但這是一條線索。我必須將它存儲爲二進制文件以節省base64使用的33%空間。
所以問題是如何添加這些數據,當然以後再讀一遍(serialize/deserialize)?
另一個問題是如何從第一行文件中刪除?
我試着使用:
marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", Boolean.FALSE);
但它拋出一個異常:
javax.xml.bind.PropertyException:名稱:com.sun.xml.bind.xmlDeclaration值:假 在javax.xml.bind.helpers.AbstractMarshallerImpl.setProperty(AbstractMarshallerImpl.java:358) 在com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.setProperty(MarshallerImpl.java:527)
由於
您可以改爲使用標準的'JAXB_FRAGMENT'屬性。 – 2013-05-14 11:12:49
您可能會發現以下有用的信息:http://blog.bdoughan.com/2011/03/jaxb-web-services-and-binary-data.html – 2013-05-14 12:07:53