关于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>
第一种:使用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>
相关文章推荐
- 关于javaweb中导入json或者xml文件出现小红叉问题
- Dictionary对象与XML文件之间的导入导出
- 使用SAX解析将xml的文件内容结构保存到java对象中
- Java实现对文件做压缩和解压缩(一般用于文件批量导入导出)
- 在Oracle表数据和xml文件间相互导入导出的PL/SQL 过程
- Java对象与xml文件互转
- 关于导入SpringMVC工程时XML文件打叉叉的问题
- 【小白做项目Java】——POI导入和导出 execl文件
- 在Oracle表数据和xml文件间相互导入导出
- Java对象与xml文件互转
- 关于apache POI excel文件导入导出
- java 关于中文字的输出 输入 和文件操作(对象序列化)
- 【小白做项目Java】——POI导入和导出 execl文件
- 关于postgis导入导出shp文件数据的一点心得,可以复制正文到记事本并保存成bat文件
- 关于Java使用POI对Excel2003和2007的导入和导出
- JAVA 导入导出EXCEL文件操作
- Java对象与XML文件互转的几个小技巧(使用jaxb工具类)
- java-----将目标XML文件数据解析为单一对象
- Java导入导出CSV文件
- java导入导出Excel文件