xml与javaBean的互相转化

前端之家收集整理的这篇文章主要介绍了xml与javaBean的互相转化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.学会使用xml的各个注解与含义,参考网址如下http://www.jb51.cc/article/p-fnvyrxrz-zm.html

举例:

</pre><pre name="code" class="java">@XmlRootElement(name="RequestOrder")
@XmlType(propOrder={"clientFlag","orderNo","subOrderNo","tradeNo","mailNo","type","flag","sender","receiver","sendStartTime","sendEndTime","codAmount","items","insuranceValue","loadRequire","remark","dataFlag"})
@XmlAccessorType(XmlAccessType.FIELD)
public class OrderRequest {


	/**客户标示**/
	@XmlElement(name="logisticProviderID")
	private String clientFlag;
	/** 客户单号**/
	private String orderNo;
	/** 子订单业号**/
	private String subOrderNo;
	/** 业务交易号**/
	private String tradeNo;
	/** 快递单号**/
	private String mailNo;
	/** 类型 代收订单0 普通正向 1 退货订单 2 **/
	private Integer type;
	/** 订单标示 0 **/
	private Integer flag;
	/** 寄件人 **/
	private PersonInfo sender;
	/** 收件人 **/
	private PersonInfo receiver;
	/** 物流上门取货时间段 **/
	private String sendStartTime;
	private String sendEndTime;
	/** 代收金额**/
	private double codAmount;
	/** 商品信息 **/
	@XmlElementWrapper(name="items")
	@XmlElement(name="item")
	private List<ZJSOrderItems> items;
	/** 保险费**/
	private double insuranceValue;
	/** 配载要求:无/禁航/禁航铁 **/
	private String loadRequire;
	/** 重要提示 **/
	private String remark;
	/** 数据标示 (用于分仓发货,C2C类客户省略) **/
	private String dataFlag;
	//构造方法
	//getter与setter方法
}



2.编写JaxUtil类,方便进行xmlTobean与beanToXml的转化

public class JaxbUtil {

	/** The logger. */
	private static final Log LOGGER = LogFactory.getLog(JaxbUtil.class);

	/**
	 * JavaBean转换成xml 默认编码UTF-8
	 * 
	 * @param obj
	 * @param writer
	 * @return
	 */
	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();
			marshaller.setProperty(Marshaller.JAXB_FRAGMENT,Boolean.TRUE);
			marshaller.setProperty(Marshaller.JAXB_ENCODING,encoding);

			StringWriter writer = new StringWriter();
			marshaller.marshal(obj,writer);
			String xmlTitle = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
			result = xmlTitle + writer.toString();
		} catch (Exception e) {
			LOGGER.error("convertToXml has error,",e);
		}

		return result;
	}

	/**
	 * xml转换成JavaBean
	 * 
	 * @param xml
	 * @param c
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T converyToJavaBean(String xml,Class<T> c) {
		T t = null;
		try {
			JAXBContext context = JAXBContext.newInstance(c);
			Unmarshaller unmarshaller = context.createUnmarshaller();
<span style="font-family: Arial,Helvetica,sans-serif; background-color: rgb(255,255,255);"></span><pre code_snippet_id="1656191" snippet_file_name="blog_20160421_2_9698971" name="code" class="java"><span style="font-family: Arial,255);"><span style="white-space:pre">				</span>xml=xml.replaceAll("&lt;","<");</span>
xml=xml.replaceAll("&gt;",">");
 
 
xml=xml.replace("<string xmlns=\"http://edi.zjs.com.cn/\"><?xml version=\"1.0\" encoding=\"utf-8\" ?>",""); 

xml=responseData.replace("</string>","");
 
<span style="white-space:pre">		</span>t = (T) unmarshaller.unmarshal(new StringReader(xml));
		} catch (Exception e) {
			LOGGER.error("converyToJavaBean has error,e);
		}
		return t;
	}

}

猜你在找的XML相关文章