在Java中解析未知对象

时间:2011-03-03 14:30:24

标签: java android parsing

我正在开发一个Android应用程序,在那里我使用SOAP从.NET Web服务获取一些对象。我没有问题得到我的对象。我使用kso​​ap2-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; }; }; }

2 个答案:

答案 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)

您是否在询问“如何序列化和反序列化Java对象?”

尝试JSON

Google提供了一个名为gson的好JSON解析库。

此问题的答案很大程度上取决于您的对象的格式;如何发布样本?