使用Java提供的类生成XML例子

来源:互联网 发布:苏州青旅 知乎 编辑:程序博客网 时间:2024/06/05 22:53

根据对象生成XML文档.

使用Java提供的java.beans.XMLEncoder和java.beans.XMLDecoder类


一、生成的xml文件如下:AStudent.xml
<?xml version="1.0" encoding="UTF-8"?>

<java version="1.5.0_08" class="java.beans.XMLDecoder">

 <object class="User">

  <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

public class User {

    // 学生姓名

    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();

    }

 

    public int getAge() {

       return age;

    }

 

    public void setAge(int age) {

       this.age = age;

    }

 

    public String getGender() {

       return gender;

    }

 

    public void setGender(String gender) {

       this.gender = gender;

    }

 

    public String getName() {

       return name;

    }

 

    public void setName(String name) {

       this.name = name;

    }

 

    public String getPhone() {

       return 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.XMLEncoderjava.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(newFileInputStream(

              inFileName));

       // 构造一个XML解码器

       XMLDecoder xmlDecoder = new XMLDecoder(bis);

       // 使用XML解码器读对象

       Object obj = xmlDecoder.readObject();

       // 关闭解码器

       xmlDecoder.close();

 

       return obj;

    }

 

    public static void main(String[] args) throws IOException {

       // 构造一个User对象

       User student = new User();

       student.setName("wamgwu");

       student.setGender("male");

       student.setAge(15);

       student.setPhone("55556666");

 

       // User对象写到XML文件

       String fileName = "AStudent.xml";

       Object2XML.object2XML(student, fileName);

       // XML文件读User对象

       User aStudent = (User) Object2XML.xml2Object(fileName);

       // 输出读到的对象

       System.out.println(aStudent.toString());

    }

}


运行结果:
C:/java>java Object2XML
姓名:liuying  性别:kate  年龄:25  电话:44557788

原创粉丝点击