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 {//创建XMLpublic 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" 里边的数据 }//批量数据生成xmlpublic 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 stubXmlOperate xml = new XmlOperate();//xml.ReadXml(); //读取xml//批量数据生成xmlList<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>
?
?
?