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);
    }
}
posted @ 2021-08-08 18:09  Lee0922  阅读(332)  评论(0)    收藏  举报