运用泛型实现复杂对象与 XML 的互转
上一篇文章XML报文转JAVA对象-JAVA对象转XML报文 介绍一下 JAXB-看红字即可
基本的注解含义https://blog.csdn.net/bestcxx/article/details/79203756 泛型方法工具类泛型(四)-泛型应用之XML和实体类型的转化 测试需要三个实体
package com.bestcxx.stu.bean;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="student")
@XmlAccessorType(XmlAccessType.FIELD)
public class MyStudent {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "MyStudent [name=" + name + ",age=" + age + "]";
}
}
package com.bestcxx.stu.bean;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class MyList {
@XmlElement(name="list自定义")
private List<MyStudent> list;
public List<MyStudent> getList() {
return list;
}
public void setList(List<MyStudent> list) {
this.list = list;
}
@Override
public String toString() {
return "MyList [list=" + list + "]";
}
}
package com.bestcxx.stu.bean;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="date")
@XmlAccessorType(XmlAccessType.FIELD)
public class MyClass {
private String className;
@XmlElement(name="mylist自定义")
private MyList mylist;
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public MyList getMylist() {
return mylist;
}
public void setMylist(MyList mylist) {
this.mylist = mylist;
}
@Override
public String toString() {
return "MyClass [className=" + className + ",mylist=" + mylist + "]";
}
}
测试方法package com.bestcxx.stu.util;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBException;
import org.junit.Test;
import com.bestcxx.stu.bean.MyClass;
import com.bestcxx.stu.bean.MyList;
import com.bestcxx.stu.bean.MyStudent;
public class XmlBeanUtilTest {
//提供参数组织的方法
public MyClass getMyClass(){
MyClass m1=new MyClass();
m1.setClassName("一班");
MyStudent m21=new MyStudent();
m21.setAge(20);
m21.setName("jecket");
MyStudent m22=new MyStudent();
m22.setAge(21);
m22.setName("jecket2");
List<MyStudent> list=new ArrayList<MyStudent>();
list.add(m21);
list.add(m22);
MyList ml=new MyList();
ml.setList(list);
m1.setMylist(ml);
return m1;
}
//Java Bean 转 XML
@Test
public void testBeanToXmlEncoding(){
//为了清晰表述,我们把参数组织单独列为一个方法
MyClass m1=getMyClass();
String xml="";
try {
xml=XmlBeanUtil.BeanToXmlEncoding(m1,"GBK");
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Java Bean 转 XML="+xml);
}
//XML 转 Java Bean
@Test
public void testXmlToBeanEncoding(){
//为了清晰表述,我们把参数组织单独列为一个方法
MyClass m1=null;
String xml="<?xml version="1.0" encoding="GBK" standalone="yes"?>"
+ "<date>"
+ "<className>一班</className>"
+ " <mylist自定义>"
+ "<list自定义>"
+ "<name>jecket</name>"
+ "<age>20</age>"
+ "</list自定义>"
+ "<list自定义>"
+ " <name>jecket2</name>"
+ "<age>21</age>"
+ " </list自定义>"
+ "</mylist自定义>"
+ "</date>";
try {
m1=XmlBeanUtil.XmlToBeanEncoding(xml,MyClass.class,"GBK");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("XML 转 Java Bean ="+m1.toString());
}
}
测试结果Java Bean 转 XML=<?xml version="1.0" encoding="GBK" standalone="yes"?>
<date>
<className>一班</className>
<mylist自定义>
<list自定义>
<name>jecket</name>
<age>20</age>
</list自定义>
<list自定义>
<name>jecket2</name>
<age>21</age>
</list自定义>
</mylist自定义>
</date>
XML 转 Java Bean =MyClass [className=一班,mylist=MyList [list=[MyStudent [name=jecket,age=20],MyStudent [name=jecket2,age=21]]]] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |