2013-08-05 106 views
-3

我得到了来自服务器的响应,我想解析它并添加到arraylist中,但我得到了Classcastexception。请帮我解析它。Saop响应解析

<NewDataSet> 
<Table> 
<Mother_Name>swati</Mother_Name> 
<Mother_DOB>15/01/1987</Mother_DOB> 
<Mother_Age>30</Mother_Age> 
<Mother_ExpConceiveDate>28/07/2013</Mother_ExpConceiveDate> 
<Alert_Description>mother alert</Alert_Description> 
</Table> 
</NewDataSet> 

,这是我的代码this.this将返回你的XML的数组列表

      int count = soapResponse.getPropertyCount();     
      SoapObject response1 = (SoapObject) response; 
      Log.w("response",""+response1.getProperty(0)); 

      for (int j = 0; j < count; j++) { 
       /** Temp SeatInfo soap object */ 
       SoapObject soChild = (SoapObject) response1.getProperty(j); 

       Log.w("motherName",""+soChild.getProperty(0)); 
        } 
+0

发布相关代码 – Raghunandan

+0

int count = soapResponse.getPropertyCount(); SoapObject response1 =(SoapObject)响应; Log.w(“response”,“”+ response1.getProperty(0));对于(int j = 0; j Kumar

回答

2

使用XML pullparser。

MyXmlPullParser objMyXmlPullParser = new MyXmlPullParser(context); 
         List<Map<String , String>> list = objMyXmlPullParser.readXml("Xml respose put here", "Table"); 



public class MyXmlPullParser 
{ 
    Context _context ; 

    public MyXmlPullParser(Context _context) 
    { 
     this._context = _context ; 
    } 

    public List<Map<String , String>> readXml(String XmlString , String ParentTag) 
    { 
     Map<String , String > map = new HashMap<String, String>(); 
     List<Map<String , String >> list = new ArrayList<Map<String , String >>(); 

     try 
     { 
      String Tag = "" ; 
      XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
      factory.setNamespaceAware(true); 
      XmlPullParser xpp = factory.newPullParser(); 

      xpp.setInput(new StringReader (XmlString)); 
      int eventType = xpp.getEventType(); 

      while (true) 
      { 
       if(eventType == XmlPullParser.START_TAG) 
       { 
        Tag = xpp.getName(); 
       } 
       else if(eventType == XmlPullParser.END_TAG) 
       { 
        Tag = "" ; 
        if(xpp.getName().equals(ParentTag)) 
        { 
         list.add(map); 
         map = new HashMap<String, String>(); 
        } 
       } 
       else if(eventType == XmlPullParser.TEXT) 
       { 
        String text = xpp.getText(); 
        if(!Tag.equals("") && !Tag.equals(ParentTag)) 
        { 
         map.put(Tag, text); 
        } 
       } 
       else if(eventType == XmlPullParser.END_DOCUMENT) 
       { 
        System.out.println("End document"); 
        break ; 
       } 
       eventType = xpp.next(); 
      } 
     } 

     catch (XmlPullParserException e) 
     { 
      Log.e("xml reader" , "error in parsing xml"); 
      return null ; 
     } 
     catch (IOException e) 
     { 
      Log.e("xml reader" , "error in IO in xml"); 
      return null ; 
     } 
     return list ; 
    }