我正在创建XML架构,需要包含一些原始二进制数据字段。什么内置数据类型提供最节省空间的表示?我将base64Binary
和hexBinary
视为两种可能性,但它们似乎都是十六进制代码的字符串表示,因此不具有空间效率,并且还会对编码它们造成时间损失。什么内置数据类型将为我提供二进制数据的最佳空间和时间效率表示?
答案 0 :(得分:4)
没有开箱即用的其他类型处理二进制内容。
效率最高的是base64,开销约为30%;十六进制的大小至少是其两倍。还假设您使用的是主要单字节字符集,例如utf-8。使用utf-16对XML进行编码将使上述数字加倍。
使用这些内置类型的优势得益于典型的xml代码绑定库;例如JAXB将为您提供一个byte [],因此编码/解码对您来说是透明的。
这还取决于您移动/存储XML的方式;如果你使用一个基于SOAP的串行器来支持二进制附件,那么特别是对于大型集合,它可以为这条路线付出代价。