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<QRCodeBean> getData()
{
return data;
}
public void setData(ArrayList<QRCodeBean> 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 = "<?xml version="1.0" encoding="utf-8" ?><ResponseBean><datas><Data><certNo>3.......16</certNo><photo>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgc...</photo></Data></datas><message/><result>0</result></ResponseBean>";
try
{
ResponseBean respBean = (ResponseBean) QRXMLUtil
.convertXmlStrToObject(ResponseBean.class, xmlStr);
respBean.getResult();
respBean.getDatas();
}
catch (JAXBException e)
{
logger.error(e.getMessage(), e);
}
}