android 怎么解析webservice 传过来的list

android 如何解析webservice 传过来的list?SoapObject result (SoapObject) envelope.bodyIn//detail

android 如何解析webservice 传过来的list?


SoapObject result = (SoapObject) envelope.bodyIn;  
        //detail = (SoapObject) result.getProperty(METHOD_NAME);  
        Log.d(LogInfo, result.toString());

打印的result.toString()是getVersion1Response{out=anyType{IPRFolder=anyType{folderName=ipr_txt; folderVersion=1; }; }; }
传过来的List是List<IPRFolder> 里面有两个变量folderName,folderVersion
[解决办法]
肯定要有一个对象与之想对应了
[解决办法]
 SoapObject soapObject = (SoapObject) envelope.getResponse(); 
                 //如果获取的是个集合,就对它进行下面的操作
                 if(soapObject.getName()=="anyType")
                 {
                 //遍历Web Service获得的集合
                 for(int i=0;i<soapObject.getPropertyCount();i++){
                 
                 MFirst m=new MFirst();
                
                 //获取单条的数据
                 SoapObject soapChilds =(SoapObject)soapObject.getProperty(i);
                 
                 //对单个的数据进行再次遍历,把它的每行数据读取出来
                 for(int k=0;k<soapChilds.getPropertyCount();k++)
                 {
                 PropertyInfo propertyInfo=new PropertyInfo();
                 soapChilds.getPropertyInfo(k, propertyInfo);
                //获取实体类的所有属性
                 Field[] field = m.getClass().getDeclaredFields();  
                //遍历所有属性
                     for(int j=0 ; j<field.length ; j++){     
                    //获取属性的名字
                             String name = field[j].getName();    


                            
                             //把每个属性的名字跟Web Service返回的k行进行对比
                             String ppinfoname=propertyInfo.getName().toLowerCase();
                         if(ppinfoname.equals(name.toLowerCase()))
                         {             
                         //调用个我也看不懂的方法,给实体类赋值,具体意思也不明白,资料就这样。
                        GetSetManager.setFieldValue(m,name,field[j].getType(),
                        soapChilds.getProperty(propertyInfo.getName()).toString());
                           }
                         }
                 }
                
                 list.add(m);
                 }
                 }


[解决办法]
 public static void setFieldValue(Object target, String fname, Class ftype,   
            Object fvalue) { //设置字段值  如:username 字段,setUsername(String username)
        if (target == null  
                
[解决办法]
 fname == null  
                
[解决办法]
 "".equals(fname)  
                
[解决办法]
 (fvalue != null && !ftype.isAssignableFrom(fvalue.getClass()))) {//如果类型不匹配,直接退出 
            return;   


        }   
        Class clazz = target.getClass();   
        try {  //先通过setXxx()方法设置类属性值
         String methodname="set"  + Character.toUpperCase(fname.charAt(0)) + fname.substring(1);
         System.out.println(methodname);
            Method method = clazz.getDeclaredMethod(methodname, ftype); //获取定义的方法
            if (!Modifier.isPublic(method.getModifiers())) {   //设置非共有方法权限
                method.setAccessible(true);   
            }   
            method.invoke(target, fvalue);  //执行方法回调
        } catch (Exception me) {//如果set方法不存在,则直接设置类属性值
      
            try {   
                Field field = clazz.getDeclaredField(fname);   //获取定义的类属性
                if (!Modifier.isPublic(field.getModifiers())) {   //设置非共有类属性权限
                    field.setAccessible(true);   
                }   
                field.set(target, fvalue); //设置类属性值
                
            } catch (Exception fe) {   
         
            }   
        }   
    }  


[解决办法]
理解是:传过来一个集合对象,然后你通过遍历SoapObject 
out=anyType{IPRFolder=anyType{folderName=ipr_txt; folderVersion=1; 
取得一个个PropertyInfo集合中某个对象
通过遍历某个对象属性,相对应的去赋值给java对象,最后得到集合