1. 程式人生 > 其它 >xml和Bean相互轉換

xml和Bean相互轉換

import com.thoughtworks.xstream.XStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;

/**
 * XML工具類
 */
public class XmlUtil {
    private static XStream xStream = new XStream();
    /**
     * 解析xml
     * @param xml xml字串
     * @param elementName 要解析的父標籤
     * @param cls 目標型別
     * @return 解析結果
     */
    public static <T> T xmlToBean(String xml, String elementName, Class<T> cls) {
        T object = null;
        try {
            Document document = DocumentHelper.parseText(xml);
            //如果不是SOAP返回的報文,是XML字串則不需要這行程式碼
            String beanXml = document.getRootElement().element("Body").element(
                    elementName).asXML();
            xStream.alias(elementName, cls);
            object = (T) xStream.fromXML(beanXml);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return object;
    }

    /**
     * 轉換XML
     *      物件新增 @XStreamAlias("標籤名稱")
     *      集合新增 @XStreamImplicit(itemFieldName="標籤名稱")
     * 否則會出現解析的xml中標籤帶類全稱現象
     * @param object 要轉換的物件
     * @return 結果字串
     */
    public static String beanToXml(Object object) {
        xStream.processAnnotations(object.getClass()); // 應用註解
        xStream.autodetectAnnotations(true); //自動檢測註解
        return xStream.toXML(object);
    }
}