基本的介绍:
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--备注的信息