The code you want to generate lacks namespace declarations, they are probably somewhere up in the tree.
The namespace for email seems to be different than the namespace for the rest. Your code needs to reflect that to generate equivalent XML.
p.s. You could try something like
PropertyInfo emailType = new PropertyInfo();
emailType.name = "email";
emailType.namespace = emailNamespace;
emailType.type = String.class;
r.addProperty(emailType, email);
kSOAP was written for J2ME, which does not support reflection, and it has some complexities to work around this. I don' think I can really recommend it on Android:
- For simple cases, one could just use the DOM
- For complex cases, a serialization library similar to GSON might make more sense (not sure if something similar to GSON exists for SOAP object serialization).