Jdom创建XML文件持久化程序数据为磁盘数据

主题简介:

本文中详细说明在JAVA中如何用Jdom的org.jdom.output包中的XMLOutputter类和Format类配合,创建XML文件保存程序中的数据
要求:
现writeXml程序中有一list集合,保存了若干个"①学生实体"对象,要求将集合中的数据保存为②结构的stu.xml磁盘文件
①实体对象如下:stu.java
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

package com.t97.bean;

public class Stu {
 private String id;
 private String add;
 private String name;
 private String sex;
 private int age;
 public String getAdd() {
  return add;
 }
 public void setAdd(String add) {
  this.add = add;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 
 @Override
 public String toString() {
  return "id:"+this.id+"\tadd:"+this.add+"\tname:"+this.name+"\tsex:"+this.sex+"\tage:"+this.age;
 }
}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
②stu.xml文件如下:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<stus>
  <stu ID="s1">
    <name>姓名</name>
    <add>地址</add>
    <sex>男</sex>
    <age>21</age>
  </stu>
</stus>
-------------------------------------------------------------------------------------------
实现思路:
1.导入org.jdom.xpath类的四个.jar包,名称如下:
jaxen-core.jar/jaxen-jdom.jar/jdom.jar/saxpath.jar. (jdom网站提供下载)
2.新建一个TestWriteXml.java文件来写入名为stu.xml文件,内容如下,并详解.

-------------------------------------------------------------------------------------------

TestWriteXml.java:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.t97.write;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import com.t97.bean.Stu;

/**
 * 此类功能:用于把程序中的数据保存到XML文件中
 * @author 尹当
 */
public class TestWriteXml {

 /**
  * 程序主入口方法
  * @param args
  */
 public static void main(String[] args) {

  //创建实例一个List集合,保存程序中的数据
  List<Stu> list = new ArrayList<Stu>();

  //调用setValue(list)方法往集合中添加数据
  setValue(list);

  //创建实例一个Document对象保存内存文档对象
  Document document = new Document();

  //创建一个名为"stusEleRoot"的根节点元素
  Element stusEleRoot = new Element("stus");

  //循环遍历集合中的数据,添加到根元素节点中
  for (Stu stu : list) {
   //创建第二子节点stu,保存每个学生的信息
   Element eleStu = new Element("stu");

   //添加名为"ID"的属性到stu节点中
   eleStu.setAttribute("ID", stu.getId());

   //创建名为"name"的子节点元素,并把STU对象的"name"属性值设置为节点元素的值,然后添加到“stu”学生节点下
   Element eleName = new Element("name");
   eleName.setText(stu.getName());
   eleStu.addContent(eleName);

   //创建名为"add"的子节点元素,并把STU对象的"add"属性值设置为节点元素的值,然后添加到“stu”学生节点下
   Element eleAdd = new Element("add");
   eleAdd.setText(stu.getAdd());
   eleStu.addContent(eleAdd);

   //创建名为"sex"的子节点元素,并把STU对象的"sex"属性值设置为节点元素的值,然后添加到“stu”学生节点下
   Element eleSex = new Element("sex");
   eleSex.setText(stu.getSex());
   eleStu.addContent(eleSex);

   //创建名为"age"的子节点元素,并把STU对象的"age"属性值设置为节点元素的值,然后添加到“stu”学生节点下
   Element eleAge = new Element("age");
   eleAge.setText(stu.getAge() + "");//转类型(javaBean中的stu.getAge()值为integer类型)
   eleStu.addContent(eleAge);

   //将“eleStu”元素作为子节点添加到“eleRoot”根节点下
   stusEleRoot.addContent(eleStu);
  }

  //实例输出流
  XMLOutputter out = new XMLOutputter();
  //得到格式化对象
  Format format = Format.getPrettyFormat();
  //输出流应用格式化对象
  out.setFormat(format);
  //添加根节点到内存文档对象中
  document.setRootElement(stusEleRoot);
  try {
   //使用XMLOutputter的output方法持久化一个名为“stu.xml”的磁盘文件
   out.output(document, new FileOutputStream("stu.xml"));
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 /**
  * 程序启动时,往集合中循环添加10个元素,以模拟程序中的数据
  * @param list集合
  */
 private static void setValue(List<Stu> list) {
  for (int i = 0; i < 10; i++) {
   Stu stu = new Stu();
   stu.setAdd("地址" + (i + 1));
   stu.setAge((i + 21));
   stu.setId("s" + (i + 1));
   stu.setName("姓名" + (i + 1));
   stu.setSex("男");
   list.add(stu);
  }
 }
}

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
个人心得-尹当

你可能感兴趣的:(数据结构,xml,bean)