创建文档:
Document doc = DocumentHelper.createDocument();
创建节点:
//创建根节点
Element root = doc.addElement("persons");
创建子节点并且给子节点添加属性:
for (person pl : pList ){
//创建学生并且将学号这个属性赋给person这个属性 ! 赋值两个属性 所以addAttribute()两次
root.addElement("person").addAttribute("stuno",pl.getId() + "").addAttribute("gender", pl.getGender());
}
将文档对象写入到XML文件中 利用 输出流 FileOutputStream();
//创建文件输出流
out = new FileOutputStream("src/students.xml");
//创建格式化的对象
OutputFormat of = OutputFormat.createPrettyPrint();
//创建XML写出文件的对象
xw = new XMLWriter(out,of);
//把 文档对象写入XML文件
xw.write(doc);
在person下创建 name ,age,address 元素 并给他们加上值!
Element ageElement = childElement.addElement("age").addText(pl.getAge()+"");
Element nameElement = childElement.addElement("name").addText(pl.getName());
Element addressElement = childElement.addElement("address").addText(pl.getAddress());
addElement(); 添加元素
addText(); 元素中间添加内容
root.addAttribute("stuno", "1"); 添加属性!
写入学生 和删除学生的代码!
package cn.dom4j;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Hkk {
public static void main(String[] args) {
//创建学生XML文档
creatXML();
//删除学生
//delteXML(1);
}
public static void creatXML(){
//创建学生集合
/*
* nteger age, String address, String name, String gender,
Integer id
*/
List<person> pList = new ArrayList<person>();
for(int i = 0; i < 10 ; i++){
person p = new person(28,"地球","学生" + i, "男" ,i );
pList.add(p);
}
Document doc = DocumentHelper.createDocument();
//创建根节点
Element root = doc.addElement("persons");
for (person pl : pList ){
//创建学生并且将学号这个属性赋给person这个属性 ! 赋值两个属性 所以addAttribute()两次
Element childElement = root.addElement("person")
.addAttribute("stuno",pl.getId() + "")
.addAttribute("gender", pl.getGender());
//Element nameElement = childElement.addElement("name", pl.getName());
//Element addressElement = childElement.addElement("address", pl.getAddress());
//Element ageElement = childElement.addElement("name", pl.getAge()+"");
Element ageElement = childElement.addElement("age").addText(pl.getAge()+"");
Element nameElement = childElement.addElement("name").addText(pl.getName());
Element addressElement = childElement.addElement("address").addText(pl.getAddress());
root.addAttribute("stuno", "1");
}
FileOutputStream out = null;
XMLWriter xw = null;
try {
//创建文件输出流
out = new FileOutputStream("src/students.xml");
//创建格式化的对象
OutputFormat of = OutputFormat.createPrettyPrint();
//创建XML写出文件的对象
xw = new XMLWriter(out,of);
//把 文档对象写入XML文件
xw.write(doc);
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(xw != null){
xw.close();
}
if(out != null){
out.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void delteXML(int stuNo){
//创建SAXReader对象
SAXReader reader = new SAXReader();
XMLWriter xw = null;
FileOutputStream out = null;
//创建输入流
FileInputStream in = null;
try {
in = new FileInputStream("src/students.xml");
//读取文档 以字节流的方式
Document doc = reader.read(in);
//获取根元素
Element root = doc.getRootElement();
//获取子元素 所有的子元素组成一个集合
List<Element> pList = root.elements();
for(Element ele : pList){
//取出子元素并拿到他们的属性 id是属性
String eVal = ele.attributeValue("stuno");
int eVal1 = new Integer(eVal);
/*
* 判断输入的学号是否和找到的学号相同,如果相同就删除有这个学号属性的元素
* */
if(stuNo == eVal1){
Element rootElement = ele.getParent();
//移除这个元素 或者说节点
rootElement.remove(ele);
//挑出循环
break;
}
}
/*
* 在将文档写回到xml
*/
//定义字节输出流
out = new FileOutputStream("src/students.xml");
//定义文档写出流
xw = new XMLWriter(out);
xw.write(doc);
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(xw != null){
xw.close();
}
if(out != null){
out.close();
}
if(in != null){
in.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}