Java对象和Xml的互相转换
1
2
3
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "ROOT")定义根元素的名字
@XmlElement(name = "NAME")定义根元素下面元素的名字,一般写在getter/setter上
@XmlElementWrapper(name = "HABITLIST")可以遍历ListT和Set,但是对于map的支持不是很好
实体类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;


@XmlRootElement(name = "ROOT")
public class XmlBean {
private String name ;

private int age;

private List<Habit> list;

@XmlElement(name = "NAME")
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@XmlElement(name = "AGE")
public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@XmlElementWrapper(name = "HABITLIST")
@XmlElement(name = "HABIT")
public List<Habit> getList() {
return list;
}

public void setList(List<Habit> list) {
this.list = list;
}
}
---------------------------------------------------------------------------------
public class Habit {

private String aboutLife;
private String aboutLern;

@XmlElement(name = "ABOUTLEARN")
public String getAboutLern() {
return aboutLern;
}

public void setAboutLern(String aboutLern) {
this.aboutLern = aboutLern;
}

public String getAboutLife() {
return aboutLife;
}

@XmlElement(name = "ABOUTLIFE")
public void setAboutLife(String aboutLife) {
this.aboutLife = aboutLife;
}
}

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@Test
public void test1(){
XmlBean xmlBean = new XmlBean();
xmlBean.setAge(15);
xmlBean.setName("张三");

Habit habit = new Habit();
habit.setAboutLern("学习");
habit.setAboutLife("生活");

Habit habit1 = new Habit();
habit1.setAboutLern("学习1");
habit1.setAboutLife("生活1");

List<Habit> list = new ArrayList<>();
list.add(habit);
list.add(habit1);

xmlBean.setList(list);
try {
String s = beanToXml(xmlBean, XmlBean.class);
System.out.println(s);
} catch (JAXBException e) {
e.printStackTrace();
}
}

生成的结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ROOT>
<AGE>15</AGE>
<HABITLIST>
<HABIT>
<ABOUTLEARN>学习</ABOUTLEARN>
<ABOUTLIFE>生活</ABOUTLIFE>
</HABIT>
<HABIT>
<ABOUTLEARN>学习1</ABOUTLEARN>
<ABOUTLIFE>生活1</ABOUTLIFE>
</HABIT>
</HABITLIST>
<NAME>张三</NAME>
</ROOT>

xml和Java对象的互相转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static String beanToXml(Object obj,Class<?> load) throws JAXBException{
JAXBContext context = JAXBContext.newInstance(load);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);//格式化xml
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
StringWriter writer = new StringWriter();
marshaller.marshal(obj,writer);
return writer.toString();
}

public static Object xmlToBean(String xml,Class<?> load) throws JAXBException, IOException {
JAXBContext context = JAXBContext.newInstance(load);
Unmarshaller unmarshaller = context.createUnmarshaller();
Object unmarshal = unmarshaller.unmarshal(new StringReader(xml));
return unmarshal;
}
文章作者: C.c
文章链接: https://liquidcat.cc/java对象和xml的互相转换.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Me