答案 0 :(得分:0)
假设您KvmSerilizer
,可以像这样定义属性以创建数组:
info.setName("ProjectImage");
info.setType(PropertyInfo.VECTOR_CLASS);
elementType.setType(PropertyInfo.STRING_CLASS);
elementType.setName("base64Binary");
elementType.setNamespace(Constants.NAMESPACE);
info.setElementType(elementType);
但是我认为您需要vector而不是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);
}
}