使用JAXB实现JAVA对象和XML字符串的互相转换
2017-05-13 15:24
871 查看
关于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=女]]]
相关文章推荐
- 使用JAXB实现JAVA对象和XML字符串的互相转换实例
- 使用JAXB实现JAVA对象和XML字符串的互相转换
- 使用JAXB实现JAVA对象和XML字符串的互相转换实例
- 使用JAXB实现JAVA解析XML (节点大小写和属性的互相转换实例
- 使用XStream注解实现Java对象与XML互相转换的代码示例---转自:http://www.blogjava.net/bolo
- JAXB 实现java对象与xml之间互相转换
- 使用XStream注解实现Java对象与XML互相转换的代码示例
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- 使用XStream注解实现Java对象与XML互相转换的代码示例
- JAXB 实现java对象与xml之间互相转换(一)
- 使用XStream注解实现Java对象与XML互相转换的代码示例
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换(二)
- java对象和xml的互相转换,JAXB可以轻松实现
- JAXB 实现java对象与xml之间互相转换
- Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
- Java&Xml教程(十一)JAXB实现XML与Java对象转换
- 使用JAXB来实现Java合xml之间的转换