根据对象生成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