Преобразование между байтом [] и представлением hexBinary или base64Binary выполняется через соответствующий XmlAdapter.
по умолчанию JAXB использует включенный HexBinaryAdapter для преобразования байта [] в строку.
Я не знаю, есть ли XmlAdapter, который конвертирует из / в base64, но это не проблема:
Вы можете легко реализовать это самостоятельно, используя собственный XmlAdpater:
public final class Base64Adapter extends XmlAdapter<String, byte[]> {
public byte[] unmarshal(String s) {
if (s == null)
return null;
return org.apache.commons.codec.binary.Base64.decodeBase64(s);
}
public String marshal(byte[] bytes) {
if (bytes == null)
return null;
return org.apache.commons.codec.binary.Base64.encodeBase64String(bytes);
}
}
На уровне поля / getter_setter вы можете указать, какой адаптер должен обрабатывать:
private class DataTestClass {
@XmlJavaTypeAdapter(Base64Adapter.class)
public byte[] base64Data = new byte[] { 0, 1, 2, 3, 4 };
@XmlJavaTypeAdapter(HexBinaryAdapter.class)
public byte[] hexbinData = new byte[] { 0, 1, 2, 3, 4 };
}