/* * Copyright (C), 2018-2021 * Project: starter * FileName: JaxbUtil * Author: xxx * Date: 2021/7/22 22:26 */ package com.fr.plugin.tabledataservice.utils; import com.fanruan.api.log.LogKit; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import java.io.StringReader; import java.io.StringWriter; /** *
* * * @author xxx * @since 1.0.0 */ public class JaxbUtil { public static String convertToXml(Object obj) { return convertToXml(obj, "UTF-8"); } /** * JavaBean转换成xml * * @param obj * @param encoding * @return */ public static String convertToXml(Object obj, String encoding) { String result = null; try { JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); // xml格式 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 去掉生成xml的默认报文头 marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); // 编码 marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding); // 不进行转义字符处理 // marshaller.setProperty(CharacterEscapeHandler.class.getName(), (CharacterEscapeHandler) (chars, start, length, isAttVal, writer) -> writer.write(chars, start, length)); StringWriter writer = new StringWriter(); marshaller.marshal(obj, writer); result = writer.toString(); } catch (Exception ex) { LogKit.error(ex.getMessage(), ex); } return result; } /** * xml转换成JavaBean * * @param xml * @param c * @return */ @SuppressWarnings("unchecked") public static T converyToJavaBean(String xml, Class c) { T t = null; try { JAXBContext context = JAXBContext.newInstance(c); Unmarshaller unmarshaller = context.createUnmarshaller(); t = (T) unmarshaller.unmarshal(new StringReader(xml)); } catch (Exception ex) { LogKit.error(ex.getMessage(), ex); } return t; } }