依据对象生成XML文档

根据对象生成XML文档
根据对象生成XML文档. 使用Java提供的java.beans.XMLEncoder

和java.beans.XMLDecoder类
一、生成的xml文件如下:AStudent.xml
<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.5.0" class="java.beans.XMLDecoder"> 
<object class="StudentBean"> 
   <void property="age"> 
     <int>15</int> 
   </void> 
   <void property="gender"> 
     <string>male</string> 
   </void> 
   <void property="name"> 
     <string>wamgwu</string> 
   </void> 
   <void property="phone"> 
     <string>55556666</string> 
   </void> 
</object></java> 
二、描述学生的JavaBean

/**
* 描述学生的JavaBean
*/
public class StudentBean {
// 学生姓名
private String name;
// 学生性别 
private String gender;
// 学生年龄
private int age;
// 学生电话号码
private String phone;
public String toString(){
   StringBuffer sb = new StringBuffer();
   sb.append("姓名:").append(this.name).append(";   ");
   sb.append("性别:").append(gender).append(";   ");
   sb.append("年龄:").append(age).append(";   ");
   sb.append("电话:").append(phone);
   return sb.toString();
}

/**
   * @return 返回 age。
   */
public int getAge() {
   return age;
}
/**
   * @param age 要设置的 age。
   */
public void setAge(int age) {
   this.age = age;
}
/**
   * @return 返回 gender。
   */
public String getGender() {
   return gender;
}
/**
   * @param gender 要设置的 gender。
   */
public void setGender(String gender) {
   this.gender = gender;
}
/**
   * @return 返回 name。
   */
public String getName() {
   return name;
}
/**
   * @param name 要设置的 name。
   */
public void setName(String name) {
   this.name = name;
}
/**
   * @return 返回 phone。
   */
public String getPhone() {
   return phone;
}
/**
   * @param phone 要设置的 phone。
   */
public void setPhone(String phone) {
   this.phone = phone;
}
}三、主程序   import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 根据对象生成XML文档.
* 使用Java提供的java.beans.XMLEncoder和java.beans.XMLDecoder类。
* 这是JDK 1.4以后才出现的类
*/
public class Object2XML {
/**
   * 对象输出到XML文件
   * @param obj 待输出的对象
   * @param outFileName 目标XML文件的文件名
   * @return 返回输出XML文件的路径
   * @throws FileNotFoundException
   */
public static String object2XML(Object obj, String outFileName)
    throws FileNotFoundException {
   // 构造输出XML文件的字节输出流
   File outFile = new File(outFileName);
   BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outFile));
   // 构造一个XML编码器
   XMLEncoder xmlEncoder = new XMLEncoder(bos);
   // 使用XML编码器写对象
   xmlEncoder.writeObject(obj);
   // 关闭编码器
   xmlEncoder.close();
  
   return outFile.getAbsolutePath();
}
/**
   * 把XML文件解码成对象
   * @param inFileName 输入的XML文件
   * @return 返回生成的对象
   * @throws FileNotFoundException
   */
public static Object xml2Object(String inFileName)
    throws FileNotFoundException {
   // 构造输入的XML文件的字节输入流
   BufferedInputStream bis = new BufferedInputStream(new FileInputStream(inFileName));
   // 构造一个XML解码器
   XMLDecoder xmlDecoder = new XMLDecoder(bis);
   // 使用XML解码器读对象
   Object obj = xmlDecoder.readObject();
   // 关闭解码器
   xmlDecoder.close();
  
   return obj;
}
public static void main(String[] args) throws IOException {
   // 构造一个StudentBean对象
   StudentBean student = new StudentBean();
   student.setName("wamgwu");
   student.setGender("male");
   student.setAge(15);
   student.setPhone("55556666");
  
   // 将StudentBean对象写到XML文件
   String fileName = "AStudent.xml";
   Object2XML.object2XML(student, fileName);
   // 从XML文件读StudentBean对象
   StudentBean aStudent = (StudentBean)Object2XML.xml2Object(fileName);
   // 输出读到的对象
   System.out.println(aStudent.toString());
}
}
运行结果:
C:\java>java Object2XML姓名:wamgwu;   性别:male;   年龄:15;   电话:55556666