|
@@ -0,0 +1,49 @@
|
|
|
+package com.phm.manage.util;
|
|
|
+
|
|
|
+import javax.xml.bind.JAXBContext;
|
|
|
+import javax.xml.bind.Marshaller;
|
|
|
+import java.io.StringWriter;
|
|
|
+import java.lang.reflect.Field;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description JaxbUtil
|
|
|
+ * @Author WGK
|
|
|
+ * @Date 2023/10/11 21:35
|
|
|
+ */
|
|
|
+public class JaxbUtil {
|
|
|
+ public static final String DEFAULT_ENCODING = "UTF-8";
|
|
|
+ private static final Marshaller.Listener MAR_LISTENER = new Marshaller.Listener() {
|
|
|
+ @Override
|
|
|
+ public void beforeMarshal(Object source) {
|
|
|
+ Field[] fields = source.getClass().getDeclaredFields();
|
|
|
+ for (Field f : fields) {
|
|
|
+ f.setAccessible(true);
|
|
|
+ try {
|
|
|
+ // 对象为空且类型为String时候设置空值
|
|
|
+ if (f.getType() == String.class && f.get(source) == null) {
|
|
|
+ f.set(source, "");
|
|
|
+ }
|
|
|
+ } catch (IllegalAccessException exception) {
|
|
|
+ exception.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ public static String convertToXml(Object obj) throws Exception {
|
|
|
+ return convertToXml(obj, DEFAULT_ENCODING);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String convertToXml(Object obj, String encoding) throws Exception {
|
|
|
+ JAXBContext context = JAXBContext.newInstance(obj.getClass());
|
|
|
+ Marshaller marshaller = context.createMarshaller();
|
|
|
+ // 指定是否使用换行和缩排对已编组 XML 数据进行格式化的属性名称。
|
|
|
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
|
|
|
+ marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
|
|
|
+ marshaller.setListener(MAR_LISTENER);
|
|
|
+ StringWriter writer = new StringWriter();
|
|
|
+ marshaller.marshal(obj, writer);
|
|
|
+ return writer.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|