/* * Copyright (C), 2018-2021 * Project: starter * FileName: JaxbUtil * Author: Louis * 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 fr.open * @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; } public static void main(String[] args) { // String xml = "Parameter_3.cptds21100地区String华北产品类型String饮料123456789468705dc60eff5f67438f9b94ed15245"; // DateSetRequest dateSetRequest = JaxbUtil.converyToJavaBean(xml, DateSetRequest.class); // System.out.println(dateSetRequest.getReportPath()); // System.out.println(dateSetRequest.getDatasourceName()); // System.out.println(dateSetRequest.getPageNumber()); // System.out.println(dateSetRequest.getPageSize()); // System.out.println(dateSetRequest.getParameters().get(1).getName()); // System.out.println(dateSetRequest.getTimestamp()); // System.out.println(dateSetRequest.getSign()); // String xml = "DEPT_CODE223351130629PACS测试pacscs东院1317654130810690000其他科室44162605-X1000超级管理员0"; // DeptChange test = JaxbUtil.converyToJavaBean(xml, DeptChange.class); // System.out.println(test.getDeptCode()); // System.out.println(test.getDeptName()); } }