利用Jdom创建xml文件放到服务器load文件夹下

来源:互联网 发布:游戏全屏软件下载 编辑:程序博客网 时间:2024/06/04 23:28

首先创建一个UserBean对象

package com.Stu;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; }}
2.......导入jdom.jar架包


3............................读取并创建xml

package com.Stu;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;

import org.jdom.DocType;import org.jdom.Document;import org.jdom.Element;import org.jdom.ProcessingInstruction;import org.jdom.output.Format;import org.jdom.output.XMLOutputter;

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

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

  //实例输出流   XMLOutputter out = new XMLOutputter();   //得到格式化对象   Format format = Format.getPrettyFormat();   //输出流应用格式化对象   out.setFormat(format);      //把XML写到硬盘上  try {      TestWriteXml path = new TestWriteXml(); System.out.println(path.getPath()+"/load/"+"stu.xml");      //使用XMLOutputter的output方法持久化一个名为“stu.xml”的磁盘文件   out.output(xmldoc(), new FileOutputStream(path.getPath()+"/load/"+"stu.xml"));  } catch (FileNotFoundException e) {   // TODO Auto-generated catch block   e.printStackTrace();  } catch (IOException e) {   // TODO Auto-generated catch block   e.printStackTrace();  } }    

  //创建xml文件 public static Document xmldoc(){

   //创建实例一个List集合,保存程序中的数据   List<Stu> list = new ArrayList<Stu>();     //调用setValue(list)方法往集合中添加数据   setValue(list);           //创建实例一个Document对象保存内存文档对象   Document document = new Document();     Map map = new HashMap();  map.put("type", "text/xsl");  map.put("href","products.xsl");  ProcessingInstruction pi = new ProcessingInstruction("xml-stylesheet",map);//处理指令     //将处理指令添加    document.addContent(pi);              /*           * 创建文档类型并添加到文档           */    DocType  type  = new DocType("taglib"); //文档类型    type.setSystemID("http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd");   //设为 system    //添加文档类型    document.addContent(type);    //创建一个名为"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);   }       //添加根节点到内存文档对象中   document.setRootElement(stusEleRoot);   return document;   }    /**  * 程序启动时,往集合中循环添加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);  } }  

 //获取工程的根路径 public  String getPath(){  String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();  String rootpath  = path.substring(0,path.indexOf("/WEB-INF/classes"));  return rootpath; } }

4..............................运行就OK了,很好理解




5....................另外给一种创建方式


package com.jdom;import java.io.IOException;import java.util.HashMap;import java.util.Map;import org.jdom.Attribute;import org.jdom.DocType;import org.jdom.Document;import org.jdom.Element;import org.jdom.ProcessingInstruction;import org.jdom.output.Format;import org.jdom.output.XMLOutputter;public class TranXMl {public static void main(String[] args) throws IOException {//创建空白文档Document doc = new Document();Map map = new HashMap();map.put("type", "text/xsl");map.put("href","products.xsl");ProcessingInstruction pi = new ProcessingInstruction("xml-stylesheet",map);//处理指令   //将处理指令添加  doc.addContent(pi);          /*         * 创建文档类型并添加到文档         */  DocType  type  = new DocType("taglib"); //文档类型  type.setPublicID("http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd");   //设为 system  //添加文档类型  doc.addContent(type);     Element root = new Element("productsDetails"); //创建一个元素  doc.setRootElement(root); //将该元素做为根元素    Element product = new Element("product");  root.addContent(product); //将product做为productsDetails的子元素    Attribute  att = new Attribute("productID","0001"); //创建属性  product.setAttribute(att); //为product设置属性    //为product创建子元素,并将其content分别设为100.00,red  product.addContent(new Element("rate").setText("100.00"));  product.addContent(new Element("color").setText("红色"));    /*   * 格式化输出   */  XMLOutputter outp = new XMLOutputter();//用于输出jdom 文档  Format format=Format.getPrettyFormat(); //格式化文档  format.setEncoding("utf-8"); //由于默认的编码是utf-8,中文将显示为乱码,所以设为gbk  outp.setFormat(format);  outp.output(doc,System.out); //输出文档}}

6..........................直接运行就可以了