没想到公司用的是xml方法进行数据交互
来源:互联网 发布:地图龟淘宝哪家的好 编辑:程序博客网 时间:2024/06/06 02:19
接手一个新项目,拿到接口文档一看,一万个草泥马在心中飘过!与后台的数据交互方式竟然是xml数据,其实也没啥了,个人用json习惯了,做了那么多项目就没碰过用xml的,没办法,就是干!一开始自己也是傻逼了,竟然用Pull解析一个一个的将xml数据解析成实体类,一个实体类对应一个解析方法,也是醉了!好在及时醒悟,毕竟xml数据也是有规律的,于是封装了个万能的方法,只针对此项目的哈,在此做个记录:
1.先看下数据形式:
private String xmlString="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<root><msgname>user/queryUserInfo</msgname><transactionid>1241241</transactionid>" + "<timestamp></timestamp><result>000000</result><resultdesc>请求成功</resultdesc>" + "<body><name>vitor</name><identitycardno>1234568797994564</identitycardno>" + "<photo>adfsadfads</photo><birthdate>1990-12-26</birthdate><validdate>456</validdate><address>深圳</address><signorg>opsdf</signorg><nation>汉</nation>" + "<sex></sex><mobile>15019297974</mobile><email>wuzq@qq.com</email><accountno>00118881000030200009</accountno>" + "<isrealname>0</isrealname><username>wuzq</username><retcode>000000</retcode><retmsg></retmsg></body></root>";2.解析数据:
(1)创建实体类:
public class UserInfo { private String name; private String identitycardno; private String photo; private String birthdate; private String validdate; private String address; private String signorg; private String nation; private String sex; private String mobile; private String retcode; private String retmsg; private int isrealname; private String accountno; private String email; public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAccountno() { return accountno; } public void setAccountno(String accountno) { this.accountno = accountno; } public int getIsrealname() { return isrealname; } public void setIsrealname(int isrealname) { this.isrealname = isrealname; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getIdentitycardno() { return identitycardno; } public void setIdentitycardno(String identitycardno) { this.identitycardno = identitycardno; } public String getPhoto() { return photo; } public void setPhoto(String photo) { this.photo = photo; } public String getBirthdate() { return birthdate; } public void setBirthdate(String birthdate) { this.birthdate = birthdate; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getValiddate() { return validdate; } public void setValiddate(String validdate) { this.validdate = validdate; } public String getSignorg() { return signorg; } public void setSignorg(String signorg) { this.signorg = signorg; } public String getNation() { return nation; } @Override public String toString() { return "UserInfo{" + "name='" + name + '\'' + ", identitycardno='" + identitycardno + '\'' + ", photo='" + photo + '\'' + ", birthdate='" + birthdate + '\'' + ", validdate='" + validdate + '\'' + ", address='" + address + '\'' + ", signorg='" + signorg + '\'' + ", nation='" + nation + '\'' + ", sex='" + sex + '\'' + ", mobile='" + mobile + '\'' + ", retcode='" + retcode + '\'' + ", retmsg='" + retmsg + '\'' + ", isrealname=" + isrealname + ", accountno='" + accountno + '\'' + ", email='" + email + '\'' + '}'; } public void setNation(String nation) { this.nation = nation; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getRetcode() { return retcode; } public void setRetcode(String retcode) { this.retcode = retcode; } public String getRetmsg() { return retmsg; } public void setRetmsg(String retmsg) { this.retmsg = retmsg; }}
(2)利用反射封装解析方法:
public static <T>T xmlToObject(String xmlResult, Class<T> clz, String tagName){ XmlPullParser parser= Xml.newPullParser(); T t=null; try { parser.setInput(new ByteArrayInputStream(xmlResult.getBytes("UTF-8")),"UTF-8"); int eventType=parser.getEventType(); while (eventType!=XmlPullParser.END_DOCUMENT){ switch (eventType){ case XmlPullParser.START_DOCUMENT:{ }break; case XmlPullParser.START_TAG:{ if (t != null) { try { Field field = clz.getDeclaredField(parser.getName()); if (field != null) { field.setAccessible(true); String type = field.getType().getSimpleName(); if (type.contains("String")) { field.set(t, parser.nextText()); } else if (type.contains("int")) { field.set(t,Integer.valueOf(parser.nextText())); } else if (type.contains("boolean")) { field.set(t,Boolean.valueOf(parser.nextText())); } else if (type.contains("float")) { field.set(t,Float.valueOf(parser.nextText())); } else if (type.contains("double")) { field.set(t,Double.valueOf(parser.nextText())); }else if (type.contains("long")) { field.set(t,Long.valueOf(parser.nextText())); } } } catch (Exception e) { e.printStackTrace(); } } if (tagName.equals(parser.getName())){ t=clz.newInstance(); } }break; case XmlPullParser.END_TAG:{ }break; } eventType=parser.next(); } return t; } catch (Exception e) { e.printStackTrace(); } return null; }
(3)查看demo
阅读全文
0 0
- 没想到公司用的是xml方法进行数据交互
- 手机数据丢失!没想到是这样找回来的
- Sketchup模型与ArcGIS进行数据交互的方法
- JS调用后台方法进行数据交互
- 一个小案例搞懂前、后端是如何进行数据交互的
- 没想到竟会是同桌的你
- 万万没想到事情是这样的
- 没想到你是这样的UDP
- 没想到你是这样的正则
- 没想到Siri是这样的“段子手”
- iOS js 交互获取数据或者是进行跳转界面
- php与delphi通过XML进行数据交互
- UE4_UDPSocket进行不同工程的数据交互
- 手机数据竟然能找回来!没想到是因为这个
- 关于Flash读取Xml数据,及后台交互实现方法的说明。
- 公司管理最重要的是方法
- 程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成
- java用post方法获取json数据,与服务器进行交互
- unity3d 一种实体动画序列帧的效果
- 利用sklearn进行tfidf计算
- 虚拟机垃圾回收相关知识整理(JVM GC)
- HDU 1789 Doing Homework again
- [深度学习]深度学习框架总结
- 没想到公司用的是xml方法进行数据交互
- 算法导论 所有结点最短路径问题 Johnson
- 使用阿里云搭建个人网站/服务器
- 设置debian的静态IP(方便简单)
- 3. S5PV210时钟体系结构框图了解
- activity跳转回退
- [ 学习 ] 8种方式帮助你如何从一名普通的程序员进阶成为一名伟大的程序员
- MVC5+LocalDb发布到IIS
- centos彻底删除文件夹、文件命令(centos 新建、删除、移动、复制等命令)