1 public class JaxbUtil {
2
3 /**
4 * java对象转换为xml文件
5 *
6 * @param xmlPath xml文件路径
7 * @param load java对象.Class
8 * @return xml文件的String
9 * @throws JAXBException
10 */
11 public static String beanToXml(Object obj, Class<?> load) throws JAXBException {
12 JAXBContext context = JAXBContext.newInstance(load);
13 Marshaller marshaller = context.createMarshaller();
14 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
15 StringWriter writer = new StringWriter();
16 marshaller.marshal(obj, writer);
17 return writer.toString();
18 }
19
20 /**
21 * xml文件配置转换为对象
22 *
23 * @param xmlPath xml文件路径
24 * @param load java对象.Class
25 * @return java对象
26 * @throws JAXBException
27 * @throws IOException
28 */
29 @SuppressWarnings("unchecked")
30 public static <T> T xmlToBean(String xmlPath, Class<T> load) throws JAXBException, IOException {
31 JAXBContext context = JAXBContext.newInstance(load);
32 Unmarshaller unmarshaller = context.createUnmarshaller();
33 return (T) unmarshaller.unmarshal(new StringReader(xmlPath));
34 }
35
36 /**
37 * JavaBean转换成xml 默认编码UTF-8
38 *
39 * @param obj
40 * @param writer
41 * @return
42 */
43 public static String convertToXml(Object obj) {
44 return convertToXml(obj, "UTF-8");
45 }
46
47 /**
48 * JavaBean转换成xml
49 *
50 * @param obj
51 * @param encoding
52 * @return
53 */
54 public static String convertToXml(Object obj, String encoding) {
55 String result = null;
56 try {
57 JAXBContext context = JAXBContext.newInstance(obj.getClass());
58 Marshaller marshaller = context.createMarshaller();
59 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
60 marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
61 //去掉生成xml的默认报文头
62 marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
63 StringWriter writer = new StringWriter();
64 writer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "\n ");
65 marshaller.marshal(obj, writer);
66 result = writer.toString();
67 } catch (Exception e) {
68 e.printStackTrace();
69 }
70 return result;
71 }
72
73 /**
74 * JavaBean转换成xml去除xml声明部分
75 *
76 * @param obj
77 * @param encoding
78 * @return
79 */
80 public static String convertToXmlIgnoreXmlHead(Object obj, String encoding) {
81 String result = null;
82 try {
83 JAXBContext context = JAXBContext.newInstance(obj.getClass());
84 Marshaller marshaller = context.createMarshaller();
85 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
86 marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
87 marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
88 StringWriter writer = new StringWriter();
89 marshaller.marshal(obj, writer);
90 result = writer.toString();
91 } catch (Exception e) {
92 e.printStackTrace();
93 }
94 return result;
95 }
96
97 /**
98 * xml转换成JavaBean
99 *
100 * @param xml
101 * @param c
102 * @return
103 */
104 @SuppressWarnings("unchecked")
105 public static <T> T converyToJavaBean(String xml, Class<T> c) {
106 T t = null;
107 try {
108 JAXBContext context = JAXBContext.newInstance(c);
109 Unmarshaller unmarshaller = context.createUnmarshaller();
110 t = (T) unmarshaller.unmarshal(new StringReader(xml));
111 } catch (Exception e) {
112 e.printStackTrace();
113 }
114 return t;
115 }
116
117 private static OutputFormat createPrettyPrint() {
118 OutputFormat format = new OutputFormat();
119 //format.setIndentSize(2);
120 format.setNewLineAfterDeclaration(false);
121 format.setNewlines(true);
122 format.setTrimText(false);
123 format.setPadText(false);
124 return format;
125 }
126
127 /**
128 *
129 * @Title: formatXml
130 * @author:humingbo
131 * @date:2019年7月18日上午11:35:08
132 * @Description: 格式化xml方法
133 * @param str
134 * @return
135 * @throws Exception
136 */
137 public static String formatXml(String str) throws Exception {
138 Document document = null;
139 document = DocumentHelper.parseText(str);
140 // 格式化输出格式
141 OutputFormat format = createPrettyPrint();
142 format.setEncoding("UTF-8");
143 StringWriter writer = new StringWriter();
144 // 格式化输出流
145 XMLWriter xmlWriter = new XMLWriter(writer, format);
146 // 将document写入到输出流
147 xmlWriter.write(document);
148 xmlWriter.close();
149 return writer.toString();
150 }
151 }