Если сложный тип данных является иерархическим, то создайте SoapObject, пока не получите последний уровень.Например, следующий фрагмент кода использует три объекта SoapObject для получения ключа и значений мыльного ответа:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
HttpTransportSE transport = new HttpTransportSE(URL);
transport.debug = true;
transport.call(SOAP_ACTION+"createSubmission", envelope);
SoapObject so = (SoapObject) envelope.bodyIn;
Log.i("data:SO", so.toString());
SoapObject so2 = (SoapObject)so.getProperty(0);
Log.i("data:SO2", so2.toString());
int count = so.getPropertyCount();
for(int i = 0; i < count; ++i) {
SoapObject so3 = (SoapObject)so.getProperty(i);
Log.i("data", (String)so3.getProperty(0)+" extra");
String key = (String) so2.getProperty(0);
Object val = so2.getProperty(1);
data.put(key, val);
}