构建xml文件案例

import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
/**
 * 利用DOM4J构建一个xml文件
 */
/**
 * 写students.xml:
1)构建Document对象
2)addElement增加根元素
3)逐层增加子元素: addElement
4)元素的setText设置元素内容
5)元素的setAttribute设置元素属性
6)输出
 * */
public class BuildXMLDemo {
 public static void main(String[] args) {
  String[] courses = {"语文","数学","英语","历史"};
  String[] students = {"小刘","廖哥","斌哥","杰娃"};
  String filename = "src/students.xml";
  buildXML(filename,courses,students);
 }
  /**
    * 将课程和学生及成绩生成到一个xml文件中
    * @param filename 要生成的xml文件名
    * @param courses 课程列表
    * @param students 学生列表
    */
 private static void buildXML(String filename, String[] courses, String[] students) {
  //1)构建Document对象
  Document doc = DocumentHelper.createDocument();
  //2)addElement增加根元素
  Element root = doc.addElement("Record");
  //3)逐层增加子元素: addElement
  Element head = root.addElement("Head");
  Element code = head.addElement("Code");
  //添加元素内容
  code.setText("1107");
  Element exam = head.addElement("Exam");
  exam.setText("是");
  Element body = root.addElement("Body");
  //在编程时,我们假设有这么一个方法,
  //它能够将课程列表和学生列表加入到body元素中,
  //然后再创建它。
  buildBody(body,courses,students);
  //同理,写个方法,能够将构造的doc对象输出到指定文件filename中
  outputXml(doc,filename);
 }
 /**
    * 将内存中构造的doc对象输出到指定的文件中.
    * @param doc doc对象
    * @param filename 输出的文件名
    */
 private static void outputXml(Document doc, String filename) {
  try {
   //输出流的目的地是filename
   /*FileWriter用法:
    * 用来写入字符文件的便捷类。
    * 此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。
    * 要自己指定这些值,
    * 可以先在 FileOutputStream 上构造一个 OutputStreamWriter。 
    * 文件是否可用或是否可以被创建取决于底层平台。
    * 特别是某些平台一次只允许一个 FileWriter(或其他文件写入对象)
    * 打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,
    * 则此类中的构造方法将失败。 
    * FileWriter 用于写入字符流。
    * 要写入原始字节流,请考虑使用 FileOutputStream。
    * */
   FileWriter fileWriter = new FileWriter(filename);
   //设置将要输出的xml文件格式.缩进.
   //createPrettyPrint创建最好的文件格式
   OutputFormat format = OutputFormat.createPrettyPrint();
   format.setEncoding("gb2312");
   //创建写xml文件的对象
   XMLWriter xmlWriter = new XMLWriter(fileWriter,format);
   xmlWriter.write(doc);
   xmlWriter.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  
 }
   /**
    * 把课程列表和学生列表加入到Body元素中
    * @param body 元素
    * @param courses 课程列表
    * @param students 学生列表
    */
 private static void buildBody(Element body, String[] courses, String[] students) {
  for(String course:courses){
   //在Body里添加子元素CourseList
   Element courseList = body.addElement("CourseList");
   Element courseCode = courseList.addElement("CourseCode");
   //设置元素内容
   courseCode.setText(course);
   Element student  = courseList.addElement("Student");
   buildStudent(student,students);
  } 
 }
 /**
    * 创建学生元素的子元素,包括学生姓名和成绩
    * @param Element student对象
    * @param students 学生列表
    */
 private static void buildStudent(Element student, String[] students) {
  for(String str:students){
   Element studentName = student.addElement("StudentName");
   studentName.setText(str);
   //增加score属性
   studentName.addAttribute("Score",new Random().nextInt(100)+"");
  } 
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值