关于Java对象与XML文件的导入和导出

最近开发中,需要将数据库读出来的对象写入XML文件,一下有两种方法:

第一种:使用Java提供的java.beans.XMLEncoderjava.beans.XMLDecoder

1.描述学生的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;
    }
}

2.主程序  
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());
    }
}

3.生成的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>

第二种方法:JDOM

package com.xh.xml;
 
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.output.XMLOutputter;
 
public class Java2XML {
 
    public void BuildXMLDoc() throws IOException, JDOMException {
 
       // 创建根节点 list;
        Element root = new Element("list");
      
       // 根节点添加到文档中;
        Document Doc = new Document(root);
 
       // 此处 for 循环可替换成 遍历 数据库表的结果集操作;
       for (int i = 0; i < 5; i++) {
          
           // 创建节点 user;
           Element elements = new Element("user");
          
           // 给 user 节点添加属性 id;
           elements.setAttribute("id", "" + i);
          
           // 给 user 节点添加子节点并赋值;
           // new Element("name")中的 "name" 替换成表中相应字段,setText("xuehui")中 "xuehui 替换成表中记录值;
           elements.addContent(new Element("name").setText("xuehui"));
           elements.addContent(new Element("age").setText("28"));
           elements.addContent(new Element("sex").setText("Male"));

 
           // 给父节点list添加user子节点;
           root.addContent(elements);
 
       }
        XMLOutputter XMLOut = new XMLOutputter();
      
       // 输出 user.xml 文件;
        XMLOut.output(Doc, new FileOutputStream("user.xml"));
    }
 
    public static void main(String[] args) {
       try {
           Java2XML j2x = new Java2XML();
           System.out.println("生成 mxl 文件...");
           j2x.BuildXMLDoc();
       } catch (Exception e) {
           e.printStackTrace();
       }
    }
 
}
生成的 user.xml  文件
 
<?xml version="1.0" encoding="UTF-8"?>
<list>
    <user id="0">
        <name>xuehui</name>
        <age>28</age>
        <sex>Male</sex>
    </user>
    <user id="1">
        <name>xuehui</name>
        <age>28</age>
        <sex>Male</sex>
    </user>
    <user id="2">
        <name>xuehui</name>
        <age>28</age>
        <sex>Male</sex>
    </user>
    <user id="3">
        <name>xuehui</name>
        <age>28</age>
        <sex>Male</sex>
    </user>
    <user id="4">
        <name>xuehui</name>
        <age>28</age>
        <sex>Male</sex>
    </user>
</list>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值