Предполагая, что вы KvmSerilizer
, вы можете определить свойство следующим образом, чтобы создать массив:
info.setName("ProjectImage");
info.setType(PropertyInfo.VECTOR_CLASS);
elementType.setType(PropertyInfo.STRING_CLASS);
elementType.setName("base64Binary");
elementType.setNamespace(Constants.NAMESPACE);
info.setElementType(elementType);
Но я думаю, что вам нужен вектор вместо ArrayList, в противном случае serelizer не будет работать.
Ваш атрибут должен быть private Vector<byte[]>
.
Кроме того, вам нужен маршалер, который преобразует вашу byte[]
в строку base64:
public class MarshalBase64 implements Marshal {
@Override
public Object readInstance(XmlPullParser parser, String namespace, String name, PropertyInfo expected) throws IOException, XmlPullParserException {
String str = parser.nextText();
byte[] decoded = Base64.decode(str, Base64.DEFAULT);
return decoded;
}
@Override
public void writeInstance(XmlSerializer writer, Object instance) throws IOException {
byte[] data = (byte[]) instance;
String encoded = Base64.encodeToString(data, Base64.NO_WRAP);
writer.text(encoded);
}
@Override
public void register(SoapSerializationEnvelope envelope) {
envelope.addMapping("http://www.w3.org/2001/XMLSchema", "base64Binary", byte[].class, this);
}
}