• 实体类与xml相互转化


    实体类:

    package test;
    
    import javax.xml.bind.annotation.XmlRootElement;
    
    @XmlRootElement
    public class Student {
        private Integer id;
        private String name;
        private Integer age;
        
        
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        @Override
        public String toString() {
            return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
        }
        
        
    }

    工具类:

    package test;  
      
    import java.io.FileNotFoundException;  
    import java.io.FileReader;  
    import java.io.FileWriter;  
    import java.io.IOException;  
    import java.io.StringReader;  
    import java.io.StringWriter;  
      
    
    import javax.xml.bind.JAXBContext;  
    import javax.xml.bind.JAXBException;  
    import javax.xml.bind.Marshaller;  
    import javax.xml.bind.Unmarshaller;  
    import javax.xml.bind.annotation.XmlRootElement;
      
    /** 
     * 封装了XML转换成object,object转换成XML的代码 
     *  
     *  
     */  
    public class XMLUtil {  
        /** 
         * 将对象直接转换成String类型的 XML输出 
         * obj在class上必须加@XmlRootElement注释
         * @param obj 
         * @return 
         */  
        public static String convertToXml(Object obj) {  
            // 创建输出流  
            StringWriter sw = new StringWriter();  
            try {  
                // 利用jdk中自带的转换类实现  
                JAXBContext context = JAXBContext.newInstance(obj.getClass());  
      
                Marshaller marshaller = context.createMarshaller();  
                // 格式化xml输出的格式  
                marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,  
                        Boolean.TRUE);  
                // 将对象转换成输出流形式的xml  
                marshaller.marshal(obj, sw);  
            } catch (JAXBException e) {  
                e.printStackTrace();  
            }  
            return sw.toString();  
        }  
      
        /** 
         * 将对象根据路径转换成xml文件 
         * obj在class上必须加@XmlRootElement注释
         * @param obj 
         * @param path 
         * @return 
         */  
        public static void convertToXml(Object obj, String path) {  
            try {  
                // 利用jdk中自带的转换类实现  
                JAXBContext context = JAXBContext.newInstance(obj.getClass());  
      
                Marshaller marshaller = context.createMarshaller();  
                // 格式化xml输出的格式  
                marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,  
                        Boolean.TRUE);  
                // 将对象转换成输出流形式的xml  
                // 创建输出流  
                FileWriter fw = null;  
                try {  
                    fw = new FileWriter(path);  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
                marshaller.marshal(obj, fw);  
            } catch (JAXBException e) {  
                e.printStackTrace();  
            }  
        }  
      
        @SuppressWarnings("unchecked")  
        /** 
         * 将String类型的xml转换成对象 
         * clazz在类名上必须加@XmlRootElement注释
         */  
        public static Object convertXmlStrToObject(Class clazz, String xmlStr) {  
            Object xmlObject = null;  
            try {  
                JAXBContext context = JAXBContext.newInstance(clazz);  
                // 进行将Xml转成对象的核心接口  
                Unmarshaller unmarshaller = context.createUnmarshaller();  
                StringReader sr = new StringReader(xmlStr);  
                xmlObject = unmarshaller.unmarshal(sr);  
            } catch (JAXBException e) {  
                e.printStackTrace();  
            }  
            return xmlObject;  
        }  
      
        @SuppressWarnings("unchecked")  
        /** 
         * 将file类型的xml转换成对象 
         * clazz在类名上必须加@XmlRootElement注释
         */  
        public static Object convertXmlFileToObject(Class clazz, String xmlPath) {  
            Object xmlObject = null;  
            try {  
                JAXBContext context = JAXBContext.newInstance(clazz);  
                Unmarshaller unmarshaller = context.createUnmarshaller();  
                FileReader fr = null;  
                try {  
                    fr = new FileReader(xmlPath);  
                } catch (FileNotFoundException e) {  
                    e.printStackTrace();  
                }  
                xmlObject = unmarshaller.unmarshal(fr);  
            } catch (JAXBException e) {  
                e.printStackTrace();  
            }  
            return xmlObject;  
        }  
        
        public static void main(String[] args) {
            Student stu=new Student();
            stu.setId(1);
            stu.setName("李三");
            stu.setAge(20);
            
            //System.out.println(convertToXml(stu));
            
            //convertToXml(stu, "e:\alivin\cc.xml");
                
            /*String xmlStr="<student><age>20</age><id>1</id><name>李三</name></student>";
            Student stu1=(Student)convertXmlStrToObject(Student.class, xmlStr);
            System.out.println(stu1);*/
            
            System.out.println(convertXmlFileToObject(Student.class, "e:\alivin\cc.xml").toString());
        }
        
    }  
  • 相关阅读:
    【java并发编程】ReentrantLock 可重入读写锁
    浏览器上写代码,4核8G微软服务器免费用,Codespaces真香
    【低码】asp.net core 实体类可生产 CRUD 后台管理界面
    深度学习和图形学渲染的结合和应用 Wonder
    Sentinel Dashboard 规则 持久化到Nacos
    一条更新SQL的内部执行及日志模块
    一条Sql的执行过程
    (数据科学学习手札136)Python中基于joblib实现极简并行计算加速
    老板给我安排了个测试环境治理的活
    C# 图片沿中心点进行角度旋转
  • 原文地址:https://www.cnblogs.com/SunAutumn/p/7550356.html
Copyright © 2020-2023  润新知