您的位置:首页 > 编程语言 > Java开发

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

2012-08-29 22:05 399 查看
最近开发中,需要将数据库读出来的对象写入XML文件,一下有两种方法:

第一种:使用Java提供的java.beans.XMLEncoder和java.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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: