博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android中webservce获取soapObject数据的解析问题
阅读量:6677 次
发布时间:2019-06-25

本文共 2563 字,大约阅读时间需要 8 分钟。

问题描述
最近在尝试做个开发,用到网络通讯这块。有几个问题:
1android客户端已经得到weibservice发挥的soapObject对象  但是怎么解析成我需要的数据类型?
通过网页得到的xml文件
<?xml version="1.0" encoding="utf-8" ?> 
- <user_info>
  <USER_NO>adminbb</USER_NO> 
  <USER_NAME>admin</USER_NAME> 
  <PASSWORD>e10adc3949ba59abbe56e057f20f883e</PASSWORD> 
  <ROLE_ID>732</ROLE_ID> 
  <TELEPHONE /> 
  <EMAIL /> 
  <REMARK /> 
  <CREATER>admin</CREATER> 
  <CREATED_TIME>2005/5/8 0:00:00</CREATED_TIME> 
  <MODIFIER>adminbb</MODIFIER> 
  <LAST_MODIFIED>2012/2/17 10:01:50</LAST_MODIFIED> 
  <INI_LON>108.9418</INI_LON> 
  <INI_LAT>34.2640</INI_LAT> 
  <LAST_LOGIN_TIME>2012/1/9 14:12:04</LAST_LOGIN_TIME> 
  <STATUS>1</STATUS> 
  <DEAD_LINE_TIME>2020/12/31 23:59:59</DEAD_LINE_TIME> 
  <LAST_LOGIN_IP>36.40.67.173</LAST_LOGIN_IP> 
  <IS_MANAGER>1</IS_MANAGER> 
  <GROUP_ID>707</GROUP_ID> 
  </user_info>
android上面调用该webservice得到的soapObject tostring()后 是下面这个样子
GetNameInfoResponse{GetNameInfoResult=anyType{user_info=anyType{USER_NO=adminbb; USER_NAME=admin; PASSWORD=e10adc3949ba59abbe56e057f20f883e; ROLE_ID=732; TELEPHONE=anyType{}; EMAIL=anyType{}; REMARK=anyType{}; CREATER=admin; CREATED_TIME=2005-5-8 0:00:00; MODIFIER=adminbb; LAST_MODIFIED=2012-2-17 10:01:50; INI_LON=108.9418; INI_LAT=34.2640; LAST_LOGIN_TIME=2012-1-9 14:12:04; STATUS=1; DEAD_LINE_TIME=2020-12-31 23:59:59; LAST_LOGIN_IP=36.40.67.173; IS_MANAGER=1; GROUP_ID=707; }; }; }
能不能向c#一样 直接得到 类似datatable型的数据。
怎么用Ksoap类能得到 标准的xml文件 然后调用android自己的解析库 解析?难道只能用post  get方法调用webservice得到xml? 解决方案1
得到SoapObject对象后循环取里面的每个字段
for(int i=0;i<soapObject.getPropertyCount();i++){
    SoapObject soapChilds =(SoapObject)soapObject.getProperty(i);
    System.out.println(soapChilds.getProperty("USER_NO").toString());
    System.out.println(soapChilds.getProperty("USER_NAME").toString());
    .
    .
    .
} 解决方案2
是的 顶楼上的 
你可以一边调试一边看取得的数据是不是对应起来了 解决方案3
如果你是自己开发两端的话,建议用json,速度快,体积小,解析灰常容易!
服务端:result = JsonConvert.SerializeObject(Objcet);//开始序列化
客户端:
GsonBuilder gsonb = new GsonBuilder();// Json中的日期表达方式没有办法直接转换成我们的Date类型, 因此需要单独注册一个Date的反序列化类.DateDeserializer ds = new DateDeserializer();// 给GsonBuilder方法单独指定Date类型的反序列化方法gsonb.registerTypeAdapter(Date.class, ds);Type t = new TypeToken
<你的数据类型,和web端保持一致的>
>() {}.getType();Gson gson = gsonb.create();// 将json数据解析成对象if (!result.equals("-1")) {//result是你获得的字符串,t是要转换的类型resultList = gson.fromJson(result, t);}
解决方案4
引用 2 楼 weicheng_android 的回复:
得到SoapObject对象后循环取里面的每个字段
for(int   i=0;i <soapObject.getPropertyCount();i++){
        SoapObject   soapChilds   =(SoapObject)soapObject.getProperty(i);
        System.out.println(soapChilds.getPro……
既然用SoapObject,那就用它的标准解法,一层层取,直到取对为止!

转载于:https://www.cnblogs.com/meizhenfen42/p/4027482.html

你可能感兴趣的文章
【分享创造】react-typewriter-hook: 用react hooks来实现打字机的效果
查看>>
极限编程 (Extreme Programming) 和用户故事 (User Stories) 的关系
查看>>
coredns 排错记
查看>>
CentOS 7 安装 Nginx
查看>>
程序员毒鸡汤:我们都该学会正确的失败
查看>>
在 JavaScript 中优雅的提取循环内的数据
查看>>
HTML-语义类标签
查看>>
cookie、session、cache-control等
查看>>
YYCache 源码学习(二):YYDiskCache
查看>>
第十八天-企业应用架构模式-基本模式
查看>>
黑客图标
查看>>
【每日笔记】【Go学习笔记】2019-01-04 Codis笔记
查看>>
Dubbo Ecosystem - 从微服务框架到微服务生态
查看>>
Hexo 搭建个人博客 #05 利用 Travis CI 帮你自动部署
查看>>
NEO改进协议提案8(NEP-8)
查看>>
NODE + JWT + Mongo(简单实现权限管理)
查看>>
egg(20)--数据库中的表与表的关系
查看>>
IPv6时代已来:双十一中的IPv6大规模应用实践
查看>>
深入理解Redis系列之SpringBoot集成Redis
查看>>
关于cookie的一些说明
查看>>