XML转Bean

Posted 喻雨晨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML转Bean相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

Bean转XML

Spring在代码中获取bean的几种方式(转)

Dom4J XML转bean

[转]解析json:与array,list,map,bean,xml相互转化

[转]hibernate在eclipse的逆向工程生成hbm.xml和bean类

Jaxb的有点与用法(bean转xml的插件,简化webservice接口的开发工作量)