dom4j读写XML及封存批量数据对象

dom4j读写XML及保存批量数据对象

1. 创建一个People对象

 

 

package XML;

public class People {

	public People() {
		// TODO Auto-generated constructor stub
	}
   private String name;
   private int age;
   private String sex;
   
   public void tell(){  //取得信息的方法   
    System.out.println(" 姓名:"+this.getName()+"  年龄:"+this.getAge()+"  性别:"+this.getSex());
   }
   
   public People(String name,int age,String sex){
	   this.setName(name);
	   this.setAge(age);
	   this.setSex(sex);
   }
   
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		if(age>=0){
			this.age = age;
		}else{
			this.age = 0;
		}
		
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
   public static void main(String args[]){  
	   new People("wangwu",-10,"男").tell();
   } 
	
}

 

2. 创建,解析XML及导入批量数据到XML中

  

package XML;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class XmlOperate {
//创建XML
public void CreateXml(){
   Document doc = DocumentHelper.createDocument();      //创建文档  (树形结构)
  Element e1 = doc.addElement("province");          //定义根节点 (第一层)
  Element e2 = e1.addElement("people");               //定义子节点(第二层)
  Element name1 = e2.addElement("name");          //定义子节点(第三层)
  Element age1 = e2.addElement("age");                //定义子节点(第三层)
  Element sex1 = e2.addElement("sex");                //定义子节点(第三层) 
   name1.setText("张三");                                       //设置子节点内容
  age1.setText("30");
   sex1.setText("男");
		
  Element xe2 = e1.addElement("people");        //定义子节点(第二层)
  Element name2 = xe2.addElement("name");    //定义子节点(第三层)
  Element age2 = xe2.addElement("age");        //定义子节点(第三层)
  Element sex2 = xe2.addElement("sex");         //定义子节点(第三层) 
  name2.setText("李四");                                    //设置子节点内容
 age2.setText("29");
  sex2.setText("女");
		
  OutputFormat format= OutputFormat.createPrettyPrint();   
    //设置输出格式
  format.setEncoding("GBK");                           //设置输出编码
   try {
       XMLWriter write = new  XMLWriter(new FileOutputStream("D:"+File.separator+"output.xml"),format);  //创建输出文件
     write.write(doc);                           //输出
     write.close();
       System.out.println("xml文件创建成功!");
        } catch (IOException e) {
           e.printStackTrace();
        }
    }
	
   //解析XML
   public void ReadXml(){
    File file1 = new File("D:"+File.separator+"output.xml");
    //读取XML文件对象	
   SAXReader read=new SAXReader();              //建立SAX解析读取
   Document doc = null;                                     //创建文档
     try {
	doc= read.read(file1);
            } catch (DocumentException e) {
	e.printStackTrace();
            }
       //取得根元素
     Element root= doc.getRootElement();           
       //取得全部的子节点
     Iterator it1= root.elementIterator();
        while(it1.hasNext()){
              Element linkname=(Element)it1.next();    //取得一个节点对象
         System.out.print("姓名:"+linkname.elementText("name"));     
            //取得name元素内容
        System.out.print(" 年龄:"+linkname.elementText("age"));     
           //取得age元素内容
       System.out.println(" 性别:"+linkname.elementText("sex"));  
           //取得sex元素内容
     }
	 //取得节点 id="test" 里边的数据
   }

//批量数据生成xml
public void ImpAllXml(List<People> people){
Document doc = DocumentHelper.createDocument();            //创建文档
Element root= doc.addElement("shanxi");                     //创建根节点int  m= people.size();
for(int i=0; i<m; i++){
  Element ele =root.addElement("people");       //定义对象节点
  ele.addAttribute("id", "test"+(i+1)+"");           //增加节点属性
  Element name = ele.addElement("name");      //定义属性节点 
  Element age = ele.addElement("age");                    
   Element sex = ele.addElement("sex");	
   name.setText(people.get(i).getName());         //为对应节点赋值
  age.setText(String.valueOf(people.get(i).getAge()));
   sex.setText(people.get(i).getSex());
}
  OutputFormat format= OutputFormat.createPrettyPrint();      
    //设置输出格式
   format.setEncoding("GBK");                                //设置输出编码
 try {
   XMLWriter write = new XMLWriter(new FileOutputStream("D:"+File.separator+"test.xml"),format);
    write.write(doc);
    write.close();
    System.out.println("创建text.xml文件成功!");
     } catch (IOException e) {
	e.printStackTrace();
       }		
}
	
	/**
	 * xml创建和解析
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		XmlOperate  xml = new XmlOperate();
		//xml.ReadXml();             //读取xml
		
		//批量数据生成xml
		List<People> list = new ArrayList<People>(); 
		 list.add(new People("川",28,"男") );
		 list.add(new People("春",28,"男"));
		 list.add(new People("小田",28,"男"));
		 list.add(new People("liu",32,"男"));
		 list.add(new People("燕",26,"女"));
		 list.add(new People("郭",29,"男"));
		xml.ImpAllXml(list);
		 
	}

}

 

3.相关的XML

 

<?xml version="1.0" encoding="GBK"?>
<province>
  <people>
    <name>张三</name>
    <age>30</age>
    <sex>男</sex>
  </people>
  <people id="test">
    <name>李四</name>
    <age>20</age>
    <sex>女</sex>
  </people>
</province>

 

  

<?xml version="1.0" encoding="GBK"?>

<shanxi>
  <people id="test1">
    <name>川</name>
    <age>28</age>
    <sex>男</sex>
  </people>
  <people id="test2">
    <name>春</name>
    <age>28</age>
    <sex>男</sex>
  </people>
  <people id="test3">
    <name>小田</name>
    <age>28</age>
    <sex>男</sex>
  </people>
  <people id="test4">
    <name>liu</name>
    <age>32</age>
    <sex>男</sex>
  </people>
  <people id="test5">
    <name>燕</name>
    <age>26</age>
    <sex>女</sex>
  </people>
  <people id="test6">
    <name>郭</name>
    <age>29</age>
    <sex>男</sex>
  </people>
</shanxi>