本文为博主原创,未经允许不得转载:

  xml在http通信中具有较高的安全性和传输速度,所以应用比较广泛,

  在项目中往往需要对xml,json和实体类进行相互转换,在这里总结一下自己所用到的一些方法:

一. 使用XMLSerializer 将xml转为json格式

  1.引入jar包:

<dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><classifier>jdk15</classifier></dependency>

  使用示例:

public static void main(String[] args) {String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"<domain xmlns:cloudcdn=\"http://cloud.chinanetcenter.com/extension/xhtml\">"+ "<domain-id>fdg68</domain-id>"+ "<domain-name>dfsg.com</domain-name>"+ "<service-type>web-https</service-type>"+ "<service-areas/>"+ "<cname>fdsgsdg.com</cname>"+ "<status>Deployed</status>"+ "<comment/>"+ "</domain>";XMLSerializer cacheXmlSerializer = new XMLSerializer();JSON referJsonResult = cacheXmlSerializer.read(xml);JSONObject referJson = JSONObject.parseObject(referJsonResult.toString());System.out.println(referJson);     //运行打印的结果为://{"domain-name":"dfsg.com","domain-id":"fdg68","service-type":"web-https","cname":"fdsgsdg.com","@xmlns:cloudcdn":"http://cloud.chinanetcenter.com/extension/xhtml","comment":[],"service-areas":[],"status":"Deployed"}}

二.通过XStream将xml转化为实体类,

  通过第一种方式也可以将xml解析为实体类,步骤为,先将xml转为json,然后将json转为实体类,

  这里介绍的方式是通过XStream将xml转为实体类:

    XStream是个很强大的工具,能将java对象和xml之间相互转化。xstream不在意java类中成员变量是私有还是公有,

  也不在乎是否有默认构造函数。它调用方式也非常简单:从xml对象转化为java对象,使用fromXML()方法;

  从java对象序列化为xml,toXML()即可,很方便。

  xstream也支持注解方式,注解方式实现和非注解方式实现的区别在于是否单独解析别名,

    如果是注解的方式,可以直接使用注解的属性将xml字段与实体类字段进行映射。

  具体可参考:https://blog.csdn.net/dc282614966/article/details/80970750

  此处展示注解式转换的实例:

  @XStreamAlias("message") 别名注解 ,作用就是将属性按照别名输出。

@XStreamAlias("User")
public class User {@XStreamAlias("name")private String name;@XStreamAlias("age")private String age;@XStreamAlias("SEX")private String sex;public User(String name, String age, String sex) {super();this.name = name;this.age = age;this.sex = sex;}@Overridepublic String toString() {return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";}
}

1.xml转换实体类的实现方式:

public static void main(String[] args) {String xml="<User>\n"+" <name>peter</name> \n"+"  <age>13</age> \n"+"  <SEX>男</SEX> \n"+" </User>";XStreamEx xStream = new XStreamEx();xStream.processAnnotations(User.class);User user = (User) xStream.fromXML(xml);}

2.将实体类转xml的方式

     User user = new User();user.setName("test");// 转换XStream xStream = new XStream();// 通过注解方式的,一定要有这句话
        xStream.processAnnotations(user.getClass());String xmlCfg = xStream.toXML(user);

转载于:https://www.cnblogs.com/zjdxr-up/p/10665414.html

xml转json和实体类的两种方式相关推荐

  1. 关于ssh框架中hibernate扫描实体类的两种方法annotatedClasses和packagesToScan

    [Hibernate]spring整合hibernate扫描实体类的两种方法annotatedClasses和packagesToScan的异同

  2. 利用反射机制创建新类的两种方式及比较

    [0]README 0.1) 本文描述+源代码均 转自 http://blog.csdn.net/fenglibing/article/details/4531033 , 旨在深入理解 如何利用反射机 ...

  3. Dynamics CRM2013/2015 检索实体属性的两种方式

    昨天有朋友问起如何查询一个字段属性是否存在于某个实体中,一般这个问题我们会采取最直观的查询方式即MetadataBrowser,该工具是一个zip解决方案包在SDK中的如下目录内"\SDK\ ...

  4. json解析详解 java_Java解析Json数据的两种方式详解

    JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...

  5. java 产生随机数的两种方式,Java产生随机数的几种方式

    一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在 ...

  6. JSON的正确格式及JSON与实体类相互转换

    json是一种与语言无关的数据交换的格式,使用Json的格式与解析方便的可以表示一个对象信息,json有两种格式:①对象格式:{"key1":obj,"key2" ...

  7. JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法

    原文地址:http://www.cnblogs.com/taven/p/3351841.html JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法 在Spr ...

  8. idea中json转实体类

    之前没觉得写个json的实体类有多麻烦,直到- 然后我就不敢再手写了- 这还只是一部分,所以以后千万别做这种无用功,效率是王道. 正文: 我们需要在idea中安装GsonFormat插件,上图 在这里 ...

  9. 如何把实体类对象转化为json(json转实体类对象)​

    使用fastjson框架解决实体类转json的问题(实体类要序列化哦,如  实体类 implements Serializable ) 1.序列化(实体类转json,text为json数据,user为 ...

最新文章

  1. TinkerNode NB-IoT物联网开发板(NB-IoT专栏—拓展篇3)
  2. 3.Struts2的输入验证
  3. java 命令读取参数_如何读取/处理命令行参数?
  4. 周期置换加密算法用c语言实现,古典密码实验报告.doc
  5. Python不使用scrapy框架而编写的网页爬虫程序
  6. 【WPF】关于XAML Parse Exception,无法创建XXX的实例异常的一点小心得
  7. AC日记——幸运号码 51nod 1043
  8. 【MATLAB】MATLAB应用手册(1):高等数学的MATLAB应用
  9. 苹果手机屏幕镜像_微软应用上线屏幕镜像功能:可在PC端控制安卓手机
  10. 非阻塞connect用法
  11. 网络爬虫-re库-正则表达式
  12. Jenkins整合slaver完整搭建
  13. 关于谷歌浏览器显示隐私设置错误的解决方案
  14. java+上传文件夹
  15. Springboot就业招聘信息系统x8y1g计算机毕业设计-课程设计-期末作业-毕设程序代做
  16. 小米max3支持html吗,小米Max3这款手机是否有OTG功能,支持OTG鼠标和U盘吗?
  17. 郑军学长-解决SVN访问慢[密]
  18. 大数据:千万个“路人甲”的价值逻辑
  19. QTableWidget设置表头筛选(含鼠标点击事件过滤)
  20. 基于MATLAB的图像去雾系统

热门文章

  1. PHP输出表格的方法
  2. 在vi里面实现字符串的批量替换
  3. 图像的膨胀与腐蚀、细化
  4. 使用TextRank算法为文本生成关键字和摘要
  5. 数据挖掘基础知识-矩阵(分解)
  6. React Bind Handle的思考
  7. 最小外接矩形思路以及实现
  8. 使用 icon 字体图标出现小方块问题
  9. 【java】【mybatis】在使用mybatis进行批量插入,批量更新等批量操作时,切割In集合List进行分批批量操作的java中的切割代码...
  10. 通过Exchange online实现HAB功能