码迷,mamicode.com
首页 > 其他好文 > 详细

XML转Bean

时间:2018-04-03 12:48:35      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:自动   blog   nta   忽略   javabean   tac   response   cas   doc   

XML转Bean有很多方式,我使用的是xtream方式实现xml与bean的互转。

下面是简单的xml转bean

    /**
     * XML转换成bean
     * @param obj
     * @return yuyuchen
     */
    public static Object XmlTojavaBean(String xmlOut) {
        Object object = null;         
        try {
            Class<?> cl = Class.forName(xmlOut);
            XStream xStreamOut = new XStream(new DomDriver());
            xStreamOut.processAnnotations(cl);
            object = xStreamOut.fromXML(xmlOut);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        return object;
    }

下面是需要特殊化处理一些别名,去掉class等

/**
     * XML转换成bean
     * @param obj
     * @return yuyuchen
     * @throws DocumentException 
     */
    public static IEsbServBodyResponse XmlTojavaBeanResp(Class<?> bean,String xmlIn) throws ClassNotFoundException, DocumentException {
        XStream xStreamIn = new XStream(new DomDriver());
        Class<?> clx =  bean;
        // 处理注解
        xStreamIn.processAnnotations(clx);
        // 标签“name”, 解析为clx类
        xStreamIn.alias(clx.getSimpleName().toLowerCase(), clx);
        // 设置标签class属性,为null(组装xml需要用到)
        xStreamIn.aliasSystemAttribute(null, "class");
        xStreamIn.addDefaultImplementation(bean, IEsbServBodyResponse.class);//此处可以转为泛型以适配所有类
        // 忽略未知的元素
        xStreamIn.ignoreUnknownElements();
        Document document = DocumentHelper.parseText(xmlIn);
        xmlIn = document.getRootElement().asXML();
        return (IEsbServBodyResponse) xStreamIn.fromXML(xmlIn);
    }

 

bean转xml:

    /**
     * bean转换成XML
     * @param obj
     * @return yuyuchen
     */
    public static String javaBeanToXml(Object obj) {
        XStream xstream = new XStream(new XppDriver(new XmlFriendlyNameCoder("_-", "_")));//别名中如有横杠‘-’或下划线‘_’,xstram会自动转2个下划线,该方法是转为一个下划线
        xstream.aliasSystemAttribute(null, "class");
        xstream.autodetectAnnotations(true);//开启自动注解
        String xmlstr = xstream.toXML(obj);
        return xmlstr;
    }

 

XML转Bean

标签:自动   blog   nta   忽略   javabean   tac   response   cas   doc   

原文地址:https://www.cnblogs.com/yuyuchen/p/8707559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!