使用JAXB实现JAVA对象和XML字符串的互相转换
来源:互联网 发布:企业工单管理系统源码 编辑:程序博客网 时间:2024/06/14 21:21
关于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;}@Overridepublic 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;}@Overridepublic 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=女]]]
1 0
- JAXB实现JAVA对象和XML字符串的互相转换
- 使用JAXB实现JAVA对象和XML字符串的互相转换实例
- 使用JAXB实现JAVA对象和XML字符串的互相转换实例
- 使用JAXB实现JAVA对象和XML字符串的互相转换
- 使用JAXB实现JAVA对象和XML字符串的互相转换
- java对象和xml的互相转换,JAXB可以轻松实现
- 使用JAXB实现JAVA解析XML (节点大小写和属性的互相转换实例
- JAXB 实现java对象与xml之间互相转换(一)
- JAXB 实现java对象与xml之间互相转换(二)
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- java 中jaxb实现对象到xml互相转换
- R语言学习总结---基本数据类型
- Visual Studio杂记
- PAT甲级1003
- Linux常用命令
- Solr6.5配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer (二)
- 使用JAXB实现JAVA对象和XML字符串的互相转换
- [robot]Forward-Kinematics
- cocos网络编程C++版本(视频笔记)
- C# explicit implicit关键字、checked关键字
- linux让进程后台运行
- 数据库操作
- UNITY 2D学习笔记(一):Sprite
- dp斜率优化 Pearls(Hdu1300)题解
- opencv配置