对象和xml相互转换工具XMLEncoder,XMLDecoder

来源:互联网 发布:青岛淘宝美工培训 编辑:程序博客网 时间:2024/06/07 05:18

基本的介绍:

    1.XMLEncoder 类是 ObjectOutputStream 的互补替换,可用于生成 JavaBean 的文本表示形式,所使用方式与用 ObjectOutputStream 创建 Serializable 对象的二进制表示形式的方式相同

              2.XMLDecoder 类用于读取使用 XMLEncoder 创建的 XML 文档,用途类似于ObjectInputStream

     XMLEncoder和XMLDecoder和ObjectOutputStream创建的Serializable对象的区别,前者转换的对象,不必实现serializable,同时对transient这个关键词不过敏。

具体的代码实现如下:

           1.javaBean对象

package com.xmlencoder;

public class Person{
    private int id;
    private String name;
    private String content;
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
    

}
测试的代码:

package com.xmlencoder;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class ObjectToXmlUtil {
    public static void writeXml() {
        try {
            XMLEncoder e= new XMLEncoder(new BufferedOutputStream(new FileOutputStream("C:\\Users\\Admin\\Desktop\\Test.xml")));
            Person person = new Person();
            person.setId(1);
            person.setName("tan");
            person.setContent("备注的信息");
            e.writeObject(person);
            e.close();
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }
    }
    
    public static void readXml(){
        try {
            XMLDecoder d=new XMLDecoder(new BufferedInputStream(new FileInputStream("C:\\Users\\Admin\\Desktop\\Test.xml")));
            Person p=(Person) d.readObject();
            System.out.println(p.getId()+"--"+p.getName()+"--"+p.getContent());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        ObjectToXmlUtil.writeXml();
//        ObjectToXmlUtil.readXml();//1
        System.out.println("hello");//2
    }
}

代码1处输出效果

 <?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_92" class="java.beans.XMLDecoder">
 <object class="com.xmlencoder.Person">
  <void property="content">
   <string>备注的信息</string>
  </void>
  <void property="id">
   <int>1</int>
  </void>
  <void property="name">
   <string>tan</string>
  </void>
 </object>
</java>

代码2处的输出效果:

1--tan--备注的信息


原创粉丝点击