根據javaBean生成xml檔案
阿新 • • 發佈:2019-02-11
<fontsize="4"face="宋體">package com.xidian.wq.imaopay.util;import java.io.StringReader; import java.io.StringWriter;import java.util.ArrayList;import java.util.List;import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import com.alibaba.fastjson.JSON;import com.xidian.wq.imaopay.model.mesdata.MsgRegBean;import com.xidian.wq.imaopay.model.mesdata.base.DataBean;import com.xidian.wq.imaopay.model.mesdata.base.RegBean;/** * * @author BYSocket * Jaxb2.0 處理Xml與Object轉換 * */public class JaxbObjectAndXmlUtil{ /** * @param xmlStr 字串 * @param c 物件Class型別 * @return 物件例項 */ @SuppressWarnings("unchecked") public static <T> T xml2Object(String xmlStr,Class<T> c) { try { JAXBContext context = JAXBContext.newInstance(c); Unmarshaller unmarshaller = context.createUnmarshaller(); T t = (T) unmarshaller.unmarshal(new StringReader(xmlStr)); return t; } catch (JAXBException e) { e.printStackTrace(); return null; } } /** * @param object 物件 * @return 返回xmlStr */ public static String object2Xml(Object object) { try { StringWriter writer = new StringWriter(); JAXBContext context = JAXBContext.newInstance(object.getClass()); Marshaller marshal = context.createMarshaller(); marshal.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化輸出 marshal.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// 編碼格式,預設為utf-8 marshal.setProperty(Marshaller.JAXB_FRAGMENT, false);// 是否省略xml頭資訊 marshal.setProperty("jaxb.encoding", "utf-8"); marshal.marshal(object,writer); return new String(writer.getBuffer()); } catch (Exception e) { e.printStackTrace(); return null;} } public static void main(String[] args) { /** 構造測試報文頭物件 */ DataBean dataBean = new DataBean(); dataBean.setBatch_no("N20150204"); dataBean.setData_type("000001"); dataBean.setVersion("v1.0"); dataBean.setUser_name("xx"); dataBean.setMsg_sign("未知"); dataBean.setRd_num("6631383"); dataBean.setRd_time("20150204"); dataBean.setK_sign("75CC479AAC09F00BA28F0E968B1BC9D1B90ADCC2"); /** 構造測試報文體物件 */ RegBean regBean = new RegBean(); regBean.setReg_sn("REG20150204"); regBean.setUser_id(12); regBean.setReg_no("33"); regBean.setReg_way("pc"); regBean.setSet_time("20150204 16:18"); regBean.setRet_url("未知"); regBean.setRemarks("無備註"); MsgRegBean msgBean = new MsgRegBean(); List<RegBean> regBeans = new ArrayList<RegBean>(); regBeans.add(regBean); regBeans.add(regBean); msgBean.setRegBeans(regBeans); msgBean.setDataBean(dataBean); String xmlStr = JaxbObjectAndXmlUtil.object2Xml(msgBean);//構造報文 XML 格式的字串 System.out.println("物件轉xml報文: \n"+xmlStr); MsgRegBean msgBean2 = JaxbObjectAndXmlUtil.xml2Object(xmlStr, MsgRegBean.class); System.out.println("報文轉xml轉: \n"+JSON.toJSONString(msgBean2)); }} </font>