1. 程式人生 > >根據javaBean生成xml檔案

根據javaBean生成xml檔案

<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>