我正在开发一个Android应用程序,在那里我使用SOAP从.NET Web服务获取一些对象。我没有问题得到我的对象。我使用ksoap2-android来处理请求。
我需要一种很好的方法将这个对象的类型解析为一个互补的Java对象。有人知道这样做的好方法吗?
它由简单类型和由简单类型组成的其他对象组成。
我现在知道的唯一方法是:
String[] types = o.toString().split(";");
然后解析字符串数组。大多数人都有更方便的方法吗?
好的例子是个好主意,所以这是我的一个对象:
anyType的{成功=真; UserMessage = anyType的{}; 相关下载在线= anyType的{}; INTVALUE = 0;的doubleValue = 0; DateTimeValue = 0001-01-01T00:00:00; AgeGroups = anyType的{}; SessionConfigurations = anyType的{Client_SessionConfiguration = {anyType的ID = 2; NAME = Skoleklasser; }; Client_SessionConfiguration = anyType的{ID = 3; NAME = Virksomheder; }; Client_SessionConfiguration = anyType的{ID = 4; NAME =Gæster; }; }; }
答案 0 :(得分:1)
我从android调用了很多web服务。我扩展了org.xml.sax.helpers.DefaultHandler类来处理响应。
public class BaseXMLResponseHandler extends DefaultHandler {
StringBuffer accumulator = new StringBuffer();
@Override
public void characters(char[] buffer, int start, int length)
throws SAXException {
accumulator.append(buffer, start, length);
}
}
然后只需实现方法
public void endElement(String uri, String localName, String qName) throws SAXException
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
例如:
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
accumulator.setLength(0); // Ready to accumulate new text
}
List<String> testElements = new ArrayList<String>();
public void endElement(String uri, String localName, String qName) throws SAXException
{
if (localName.equals("testelement")) {
testElements.add(accumulator.toString());
}
}
List<String> getElements() {
return testElements;
}
答案 1 :(得分:1)