使用JAXB实现JAVA对象和XML字符串的互相转换
关于JAXB的介绍,见:http://blog.csdn.net/qq_32786873/article/details/71715254
测试类:
package com.solin.test;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
Student student = new Student();
student.setName("邪恶小法师");
student.setAge("110");
student.setSex("男");
List<Student.Friend> list = new ArrayList<>();
Student.Friend f1 = new Student.Friend();
f1.setName("德玛西亚之力");
f1.setAge("888");
f1.setSex("男");
Student.Friend f2 = new Student.Friend();
f2.setName("无双剑姬");
f2.setAge("898");
f2.setSex("女");
list.add(f1);
list.add(f2);
student.setFriend(list);
//将java对象转换为XML字符串
String xmlStr = XmlAndJavaObjectConvert.convertToXml(student);
System.out.println(xmlStr);
//将xml字符串转换为java对象
System.out.println(XmlAndJavaObjectConvert.convertXmlStrToObject(Student.class, xmlStr));
}
}
实体类:
package com.solin.test;
import java.util.List;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
//XML文件中的根标识
@XmlRootElement(name = "Student")
//控制JAXB 绑定类中属性和字段的排序
@XmlType(propOrder = {
"name",
"age",
"sex",
"friend"
})
public class Student {
private String name;
private String age;
private String sex;
private List<Friend> friend;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@XmlElementWrapper(name="friendList")
public List<Friend> getFriend() {
return friend;
}
public void setFriend(List<Friend> friend) {
this.friend = friend;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", sex=" + sex + ", friendList=" + friend + "]";
}
public static class Friend{
private String name;
private String age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Friend [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
}
工具类:
package com.solin.test;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
public class XmlAndJavaObjectConvert {
/**
* 将对象直接转换成String类型的 XML输出
*
* @param obj
* @return
*/
public static String convertToXml(Object obj) {
// 创建输出流
StringWriter sw = new StringWriter();
try {
// 利用jdk中自带的转换类实现
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
// 格式化xml输出的格式
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
// 将对象转换成输出流形式的xml
marshaller.marshal(obj, sw);
} catch (JAXBException e) {
e.printStackTrace();
}
return sw.toString();
}
/**
* 将String类型的xml转换成对象
*/
public static Object convertXmlStrToObject(Class clazz, String xmlStr) {
Object xmlObject = null;
try {
JAXBContext context = JAXBContext.newInstance(clazz);
// 进行将Xml转成对象的核心接口
Unmarshaller unmarshaller = context.createUnmarshaller();
StringReader sr = new StringReader(xmlStr);
xmlObject = unmarshaller.unmarshal(sr);
} catch (JAXBException e) {
e.printStackTrace();
}
return xmlObject;
}
}
输出结果如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Student>
<name>邪恶小法师</name>
<age>110</age>
<sex>男</sex>
<friendList>
<friend>
<age>888</age>
<name>德玛西亚之力</name>
<sex>男</sex>
</friend>
<friend>
<age>898</age>
<name>无双剑姬</name>
<sex>女</sex>
</friend>
</friendList>
</Student>
Student [name=邪恶小法师, age=110, sex=男, friendList=[Friend [name=德玛西亚之力, age=888, sex=男], Friend [name=无双剑姬, age=898, sex=女]]]
---------------------
作者:日出东方VS唯我不败
来源:CSDN
原文:https://blog.csdn.net/qq_32786873/article/details/71817149
版权声明:本文为博主原创文章,转载请附上博文链接!
使用JAXB实现JAVA对象和XML字符串的互相转换相关推荐
- JAXB处理java对象与xml格式之间的转换
JAXB(Java Architecture for XML Binding)是J2SE和J2EE平台的一部分,让开发者能够快速完成Java类和XML的互相映射.一些具体的介绍和使用可以到此细看:JA ...
- jaxb java xml序列化_XML编程总结(六)——使用JAXB进行java对象和xml格式之间的相互转换...
(六)使用JAXB进行java对象和xml格式之间的相互转换 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML ...
- JAXB实现java对象与xml之间转换
一.Jaxb处理java对象和xml之间转换常用的annotation有: 1. @XmlType 2. @XmlElement 3. @XmlRootElement 4. @XmlAttribute ...
- java对象与json字符串的互相转换
java对象与json字符串的互相转换 1.采用 net.sf.json.JSONObject maven依赖包: 1 <dependency> 2 <groupId>net. ...
- SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换)
Spring3.1开始使用新的HandlerMapping 和 HandlerAdapter 来支持@Contoller 和@RequestMapping注解处理:处理器映射RequestMappin ...
- java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...
- JAXB:Java对象序和XML互相转化的利器
JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式.JAXB提供两种主要特性:将一个Java对象序列化为XM ...
- Java对象转xml报文和xml报文转Java对象帮助类
import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marsha ...
- java对象与Json字符串之间的转化(fastjson)
1. 首先引入jar包 在pom.xml文件里加入下面依赖: <dependency><groupId>com.alibaba</groupId><artif ...
- 【实用】Java对象与JSON字符串的互转,实用操作!
最近,工作中会涉及到Java对象与JSON字符串相互转换,虽然说并不难,但打算还是梳理一番,主要内容有: JSON 字符串 转 普通对象 普通对象 转 JSON 字符串 JSON 字符串数组 转 Li ...
最新文章
- android京东秒杀倒计时,js实现京东秒杀倒计时功能
- 基于“分布 —— 多分布” 的点云配准方法
- matlab多维数组、结构体数组
- 解决element 照片墙上传时回显问题
- js字符串的操作方法
- 企业面试题库_数据库部分
- 代码编辑器横评:为什么 VS Code 能拔得头筹
- ajax登录验证的原理,ajax用户登录验证-get和post提交方式,与工作原理—2018-8-15...
- Kernel Panic常见原因以及解决方法
- python工程代码语法_python编码环境安装与基本语法
- adb卸载手机内置软件
- vbs脚本巡检windows主机
- UA PHYS515A 电磁学II 静电学问题8 球坐标系中的Laplace方程与球谐函数
- RNA剪接体 Spliceosome | 冷冻电镜 | 结构生物学
- 未来人工智能发展趋势
- VS修改MFC工程的程序图标
- smbd - 向客户提供SMB/CIFS服务的服务器
- 用大数据解决“痛点”问题 “云上贵州”再发力
- “听觉”营销价值凸显,喜马拉雅迎来新局点
- 福布斯发布2013中国潜力上市公司100强(表)
热门文章
- 《富爸爸穷爸爸》读书笔记(1):钱究竟是什么?
- Jupyter notebook的主题和字体美化
- hdrp_HDRP:在2019.3版中无法预览
- 基于TB67S109AFNAG的步进电机控制板分享
- HyperX旋火无线游戏鼠标,摆脱“线”制,黑白双煞争分夺秒
- 稳定版正式发布 | 用 Flutter 构建 Windows 桌面应用程序
- luci网页shell_LUCI 使用其原有机制的建立新的页面
- 【UiBot干货】UiBot屏幕锁屏常见的7个问题
- DTOJ 2746. 皇后游戏(game)
- php文本安全内容敏感词检测(微信的)