• java实现xml格式与javabean之间的转换XmlUtil类


    XmlUtil类:
    不多说,直接撸代码:
        /**
         * java 转换成xml
         * @Title: toXml
         * @Description: TODO
         * @param obj 对象实例
         * @return String xml字符串
         */
        public static String toXml(Object obj){
            XStream xstream=new XStream();
    //          XStream xstream=new XStream(new DomDriver()); //直接用jaxp dom来解释
    //          XStream xstream=new XStream(new DomDriver("utf-8")); //指定编码解析器,直接用jaxp dom来解释
    
            ////如果没有这句,xml中的根元素会是<包.类名>;或者说:注解根本就没生效,所以的元素名就是类的属性
            xstream.processAnnotations(obj.getClass()); //通过注解方式的,一定要有这句话
            return xstream.toXML(obj);
        }
        /**
         *  将传入xml文本转换成Java对象
         * @Title: toBean
         * @Description: TODO
         * @param xmlStr
         * @param cls  xml对应的class类
         * @return T   xml对应的class类的实例对象
         *
         * 调用的方法实例:PersonBean person=XmlUtil.toBean(xmlStr, PersonBean.class);
         */
        public static <T> T  toBean(String xmlStr, Class<T> cls){
            //注意:不是new Xstream(); 否则报错:java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserFactory
            XStream xstream=new XStream(new DomDriver());
            xstream.ignoreUnknownElements();
            xstream.processAnnotations(cls);
            T obj=(T)xstream.fromXML(xmlStr);
            return obj;
        }
    /**
         * 写到xml文件中去
         * @Title: writeXMLFile
         * @Description: TODO
         * @param obj 对象
         * @param absPath 绝对路径
         * @param fileName  文件名
         * @return boolean
         */
    
        public static boolean toXMLFile(Object obj, String absPath, String fileName ){
            String strXml = toXml(obj);
            String filePath = absPath + fileName;
            File file = new File(filePath);
            if(!file.exists()){
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    logger.error("创建{"+ filePath +"}文件失败!!!" , e);
                    return false ;
                }
            }// end if
            OutputStream ous = null ;
            try {
                ous = new FileOutputStream(file);
                ous.write(strXml.getBytes());
                ous.flush();
            } catch (Exception e1) {
                logger.error("写{"+ filePath +"}文件失败!!!" ,e1);
                return false;
            }finally{
                if(ous != null )
                    try {
                        ous.close();
                    } catch (IOException e) {
                        logger.error("写{"+ filePath +"}文件关闭输出流异常!!!" ,e);
                    }
            }
            return true ;
        }

    over。。。

  • 相关阅读:
    J2EE13个规范--【J2EE】
    事件监听、持有对方的引用--【J2SE】
    TCP协议:服务端和客户端demo--【J2SE】
    线程:Interrupt、Sleep、Join、线程同步--【J2SE】
    1. Visual C++ 6.0 安装和使用
    无法连接虚拟设备sata0:1,因为主机上没有相应的设备
    Linux文件夹文件创建、删除
    服务器
    linux 下 apache启动、停止、重启命令
    Apache部署静态html
  • 原文地址:https://www.cnblogs.com/chenzeyong/p/7375861.html
Copyright © 2020-2023  润新知