我需要将二进制数据附加到文件中,但在此数据之前是 xml 标头。整个文件不会是正确的 xml 文件,但它必须是正确的 xml 标头,如下所示:
<EncryptedFileHeader>
<Algorithm>name</Algorithm>
<KeySize>256</KeySize>
<SubblockLength>64</SubblockLength>
<CipherMode>ECB</CipherMode>
<sessionKey>sessionKey</sessionKey>
</EncryptedFileHeader>
*binary data*
我用 JAXB 编组很容易的 xml 标头,甚至更容易的是在 base64 中添加这个二进制数据并存储在 xml 中的 note 中。但这是一个线索。我必须将其存储为二进制文件以节省 base64 使用的 33% 空间。
所以问题是如何添加这些数据,当然以后再读回来(序列化/反序列化)?
另一个问题是如何从文件的第一行中删除?
我尝试使用:
marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", Boolean.FALSE);
但它会引发异常:
javax.xml.bind.PropertyException:名称:com.sun.xml.bind.xmlDeclaration 值:在 com.sun.xml.internal 的 javax.xml.bind.helpers.AbstractMarshallerImpl.setProperty(AbstractMarshallerImpl.java:358) 处为 false。 bind.v2.runtime.MarshallerImpl.setProperty(MarshallerImpl.java:527)
谢谢