zoukankan      html  css  js  c++  java
  • 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。。。

  • 相关阅读:
    各种sensor名称统计
    数组指针和指针数组的区别
    自己写一个线程池
    git命令总结
    用链表实现队列的功能
    一个free的问题
    生产者消费者问题--进阶2
    影响架构决策的非功能性需求
    从商业角度探讨API设计
    给公司部门设计的SOA架构
  • 原文地址:https://www.cnblogs.com/chenzeyong/p/7375861.html
Copyright © 2011-2022 走看看