JaxbXmlUtil.java
4.12 KB
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package com.huaheng.common.utils;
import com.huaheng.common.exception.service.ServiceException;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.*;
import java.text.MessageFormat;
public class JaxbXmlUtil {
public static final String DEFAULT_ENCODING = "UTF-8";
/**
* pojo转换成xml 默认编码UTF-8
*
* @param obj 待转化的对象
* @return xml格式字符串
* @throws Exception JAXBException
*/
public static String convertToXml(Object obj) {
return convertToXml(obj, DEFAULT_ENCODING);
}
/**
* pojo转换成xml
*
* @param obj 待转化的对象
* @param encoding 编码
* @return xml格式字符串
* @throws Exception JAXBException
*/
public static String convertToXml(Object obj, String encoding){
if(obj != null){
Marshaller marshaller = null;
JAXBContext context = null;
try{
context = JAXBContext.newInstance(obj.getClass());
}catch (Exception e){
e.printStackTrace();
}
try{
marshaller = context.createMarshaller();
}catch (Exception e){
e.printStackTrace();
}
// 指定是否使用换行和缩排对已编组 XML 数据进行格式化的属性名称。
try{
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
}catch (Exception e){
e.printStackTrace();
}
try{
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
}catch (Exception e){
e.printStackTrace();
}
StringWriter writer = new StringWriter();
try{
marshaller.marshal(obj, writer);
}catch (Exception e){
e.printStackTrace();
}
String result = null;
result = writer.toString();
writer.flush();
try{
writer.close();
}catch (Exception e){
e.printStackTrace();
}
return result;
}
throw new ServiceException("xml对象不能为空!");
}
/**
* xml转换成JavaBean
*
* @param xml xml格式字符串
* @param t 待转化的对象
* @return 转化后的对象
* @throws Exception JAXBException
*/
@SuppressWarnings("unchecked")
public static <T> T convertToJavaBean(String xml, Class<T> t) throws Exception {
T obj = null;
JAXBContext context = JAXBContext.newInstance(t);
Unmarshaller unmarshaller = context.createUnmarshaller();
try {
obj = (T) unmarshaller.unmarshal(new StringReader(xml));
}catch (Exception e){
e.printStackTrace();
}
return obj;
}
@SuppressWarnings("unchecked")
public static <T> T readConfig(Class<T> clazz, String config, Object... arguments) throws IOException, JAXBException {
InputStream is = null;
try {
if (arguments.length > 0) {
config = MessageFormat.format(config, arguments);
}
// logger.trace("read configFileName=" + config);
JAXBContext jc = JAXBContext.newInstance(clazz);
Unmarshaller u = jc.createUnmarshaller();
is = new FileInputStream(config);
return (T) u.unmarshal(is);
} catch (IOException e) {
throw e;
} catch (JAXBException e) {
throw e;
} finally {
if (is != null) {
is.close();
}
}
}
@SuppressWarnings("unchecked")
public static <T> T readConfigFromStream(Class<T> clazz, InputStream dataStream) throws JAXBException {
try {
JAXBContext jc = JAXBContext.newInstance(clazz);
Unmarshaller u = jc.createUnmarshaller();
return (T) u.unmarshal(dataStream);
} catch (JAXBException e) {
throw e;
}
}
}