Posted on 2007-09-07 15:51
semovy 閱讀(642)
評論(0) 編輯 收藏 所屬分類:
JAVA應用
根據(jù)對象生成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 要設(shè)置的 age。
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return 返回 gender。
*/
public String getGender() {
return gender;
}
/**
* @param gender 要設(shè)置的 gender。
*/
public void setGender(String gender) {
this.gender = gender;
}
/**
* @return 返回 name。
*/
public String getName() {
return name;
}
/**
* @param name 要設(shè)置的 name。
*/
public void setName(String name) {
this.name = name;
}
/**
* @return 返回 phone。
*/
public String getPhone() {
return phone;
}
/**
* @param phone 要設(shè)置的 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;
/**
* 根據(jù)對象生成XML文檔.
* 使用Java提供的java.beans.XMLEncoder和java.beans.XMLDecoder類。
* 這是JDK 1.4以后才出現(xiàn)的類
*/
public class Object2XML {
/**
* 對象輸出到XML文件
* @param obj 待輸出的對象
* @param outFileName 目標XML文件的文件名
* @return 返回輸出XML文件的路徑
* @throws FileNotFoundException
*/
public static String object2XML(Object obj, String outFileName)
throws FileNotFoundException {
// 構(gòu)造輸出XML文件的字節(jié)輸出流
File outFile = new File(outFileName);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outFile));
// 構(gòu)造一個XML編碼器
XMLEncoder xmlEncoder = new XMLEncoder(bos);
// 使用XML編碼器寫對象
xmlEncoder.writeObject(obj);
// 關(guān)閉編碼器
xmlEncoder.close();
return outFile.getAbsolutePath();
}
/**
* 把XML文件解碼成對象
* @param inFileName 輸入的XML文件
* @return 返回生成的對象
* @throws FileNotFoundException
*/
public static Object xml2Object(String inFileName)
throws FileNotFoundException {
// 構(gòu)造輸入的XML文件的字節(jié)輸入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(inFileName));
// 構(gòu)造一個XML解碼器
XMLDecoder xmlDecoder = new XMLDecoder(bis);
// 使用XML解碼器讀對象
Object obj = xmlDecoder.readObject();
// 關(guān)閉解碼器
xmlDecoder.close();
return obj;
}
public static void main(String[] args) throws IOException {
// 構(gòu)造一個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());
}
}
運行結(jié)果:
C:\java>java Object2XML姓名:wamgwu; 性別:male; 年齡:15; 電話:55556666