javabean与xml互转(jdk自带)

package com.progth.practice.bean;

import javax.xml.bind.annotation.XmlRootElement;

/**
* xml解析bean
* <一句话功能简述>
* <功能详细描述>
*
* @author Zhangt
* @version [版本号, 2017年7月25日]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
@XmlRootElement
public class ResponseBean
{

private Datas datas;

private String message;

private Integer result;

public Datas getDatas()
{
    return datas;
}

public void setDatas(Datas datas)
{
    this.datas = datas;
}

public String getMessage()
{
    return message;
}

public void setMessage(String message)
{
    this.message = message;
}

public Integer getResult()
{
    return result;
}

public void setResult(Integer result)
{
    this.result = result;
}

}

package com.progth.practice.bean;

import java.util.ArrayList;

import javax.xml.bind.annotation.XmlRootElement;

/**
* xml解析bean
* <一句话功能简述>
* <功能详细描述>
*
* @author Zhangt
* @version [版本号, 2017年7月25日]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
@XmlRootElement
public class Datas
{
private ArrayList data = new ArrayList();

public ArrayList getData()
{
    return data;
}

public void setData(ArrayList data)
{
    this.data = data;
}

}

package com.progth.practice.bean;

import javax.xml.bind.annotation.XmlRootElement;

/**
* xml解析bean
* <一句话功能简述>
* <功能详细描述>
*
* @author Zhangt
* @version [版本号, 2017年7月25日]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
@XmlRootElement
public class QRCodeBean
{

private String certNo;

private String photo;

public String getCertNo()
{
    return certNo;
}

public void setCertNo(String certNo)
{
    this.certNo = certNo;
}

public String getPhoto()
{
    return photo;
}

public void setPhoto(String photo)
{
    this.photo = photo;
}

}

package com.progth.practice.util;

import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

/**
* xml与javabean互转
* <一句话功能简述>
* <功能详细描述>
*
* @author Zhangt
* @version [版本号, 2017年7月25日]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class QRXMLUtil
{
/**
* 转成xml
* <一句话功能简述>
* <功能详细描述>
* @param obj
* @return [参数说明]
*
* @return String [返回类型说明]
* @throws JAXBException
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
public static String convertToXml(Object obj) throws JAXBException
{
// 创建输出流
StringWriter sw = new StringWriter();
// 利用jdk中自带的转换类实现
JAXBContext context = JAXBContext.newInstance(obj.getClass());

    Marshaller marshaller = context.createMarshaller();
    // 格式化xml输出的格式  
    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
    marshaller.setProperty(Marshaller.JAXB_ENCODING, "utf-8");
    // 将对象转换成输出流形式的xml  
    marshaller.marshal(obj, sw);
    return sw.toString().replace("standalone=\"yes\"", "").replace(
            "requestBean", "RequestBean");
}

/**
 * 转成对象
 * <一句话功能简述>
 * <功能详细描述>
 * @param clazz
 * @param xmlStr
 * @return [参数说明]
 * 
 * @return Object [返回类型说明]
 * @throws JAXBException 
 * @exception throws [违例类型] [违例说明]
 * @see [类、类#方法、类#成员]
 */
public static Object convertXmlStrToObject(Class clazz, String xmlStr)
        throws JAXBException
{
    xmlStr = xmlStr.replace("ResponseBean", "responseBean").replace("Data",
            "data");
    Object xmlObject = null;
    JAXBContext context = JAXBContext.newInstance(clazz);
    // 进行将Xml转成对象的核心接口  
    Unmarshaller unmarshaller = context.createUnmarshaller();
    StringReader sr = new StringReader(xmlStr);
    return unmarshaller.unmarshal(sr);
}

}

private static void main(String[] args)
{
    String xmlStr = "3.......16/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgc...0";
    try
    {
        ResponseBean respBean = (ResponseBean) QRXMLUtil
                .convertXmlStrToObject(ResponseBean.class, xmlStr);
        respBean.getResult();
        respBean.getDatas();
    }
    catch (JAXBException e)
    {
        logger.error(e.getMessage(), e);
    }
}

javabean与xml互转(jdk自带)_第1张图片

你可能感兴趣的:(java后端,javabean,xml互转)