给一个空的xml文件写入数据

package com.softeem.dom.write;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Demo1 {
public static void main(String[] args) {
// 增加文档
Document document = DocumentHelper.createDocument();
// 增加Element: parent.addElement("childName");
Element root = document.addElement("userlist");
// 增加Attribute addAttribute("属性名","属性值")
Element user1 = root.addElement("user");
user1.addAttribute("id", "100");
Element username = user1.addElement("username");
username.setText("小周");
Element password = user1.addElement("password");
password.setText("admin");

// 写入文件
XMLWriter xmlWriter = null;
FileOutputStream fos = null;
try {
fos = new FileOutputStream(new File("src\\WriteDemo.xml"));

// 设置输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");

// 创建writer(参数一:输出流,参数二L:输出格式)
xmlWriter = new XMLWriter(fos, format);
// 写数据
xmlWriter.write(document);

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 关闭资源
fos.close();
xmlWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}
}



package com.softeem.dom.write;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
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.XMLWriter;

public class Demo2 {
public static void main(String[] args) {
List<UserBean> userList = new ArrayList<UserBean>();
ArrayList<String> favoriteList = new ArrayList<String>();
favoriteList.add("看电影");
favoriteList.add("美食");
favoriteList.add("旅游");
userList.add(new UserBean("100", "aaa", "aaa", favoriteList));
userList.add(new UserBean("101", "bbb", "bbb", favoriteList));
userList.add(new UserBean("102", "ccc", "ccc", favoriteList));

save(userList);
}

private static void save(List<UserBean> userList) {
// 1.创建document
Document document = DocumentHelper.createDocument();
// 2.将数据加入到document
// <userlist></userlist>
Element root = document.addElement("userlist");
for (UserBean user : userList) {
// <user id="100"></user>
Element userEle = root.addElement("user");
userEle.addAttribute("id", user.getId());
// <usrename>文本</username>
Element nameEle = userEle.addElement("username");
nameEle.setText(user.getUsername());
// <password>文本</password>
Element pwdEle = userEle.addElement("password");
pwdEle.setText(user.getPassword());

// <favoritelist>...</favoritelist>
Element favoriteListEle = userEle.addElement("favoritelist");

List<String> favorites = user.getFavorites();
for (String favorite : favorites) {
// <favorite></favorite>
Element favoriteEle = favoriteListEle.addElement("favorite");
favoriteEle.setText(favorite);
}
}

// 3.将document持久化
FileOutputStream fos = null;
XMLWriter writer = null;
try {
fos = new FileOutputStream(new File("src\\UserList.xml"));
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
// 编码方式:<?xml version="1.0" encoding="utf-8"?>
outputFormat.setEncoding("utf-8");

writer = new XMLWriter(fos, outputFormat);

writer.write(document);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}

}
}



修改属性值

package com.softeem.dom.write;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import com.softeem.utils.StreamUtils;
import com.softeem.utils.XmlUtils;

public class Demo3 {
public static void main(String[] args) throws DocumentException {

// 拿到属性对象,修改值
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new File("src\\UserList.xml"));
// 获取根节点
Element root = doc.getRootElement();

// 取user元素
Element userEle = root.element("user");
// 修改属性:
/*
* 方式一:获取属性对象,修改属性值 // 获取属性对象 Attribute idAttr =
* userEle.attribute("id"); // 修改值 if (idAttr != null)
* idAttr.setValue("1000000");
*/
// 方式二:添加同名属性(如果属性不存在,添加;存在就覆盖)
userEle.addAttribute("id", "200000");

// 修改Element的text
// (1)找到Element
Element pwdEle = userEle.element("password");
// (2)重新设置文本
pwdEle.setText("123456789");

// 保存修改(修改的都是document对象,对文件内容没有任何影响)
XmlUtils.writeDocument(doc, new File("src\\UserList.xml"));
}

// /**
// * 将document中的数据持久化到文件中
// *
// * @param source
// * @param targetFile
// */
// public static void writeDocument(Document source, File targetFile) {
// FileOutputStream fos = null;
// XMLWriter xmlWriter = null;
// try {
// fos = new FileOutputStream(targetFile);
// OutputFormat format = OutputFormat.createPrettyPrint();
// format.setEncoding("utf-8");
//
// xmlWriter = new XMLWriter(fos, format);
//
// xmlWriter.write(source);
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// } finally {
// try {
// if (xmlWriter != null)
// xmlWriter.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
//
// StreamUtils.closeOut(fos);
// }
// }
}



删除元素

package com.softeem.dom.write;

import java.io.File;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.softeem.utils.XmlUtils;

public class Demo4 {
public static void main(String[] args) throws DocumentException {
// 删除Element:删除id=101的user元素
deleteUserById("101");
// 删除属性 : 删除所有user的id属性
deleteIdAttribute();
}

private static void deleteIdAttribute() throws DocumentException {
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("src\\UserList.xml"));

// 获取root
Element root = doc.getRootElement();
// 获取user
Iterator<Element> userIte = root.elementIterator("user");
while (userIte.hasNext()) {
Element userEle = userIte.next();

// 需要把userEle中的id属性删除
// 获取属性对象
Attribute idAttr = userEle.attribute("id");
idAttr.detach();
// 方式二:
// idAttr.getParent().remove(idAttr);
}

//持久化
XmlUtils.writeDocument(doc, new File("src\\UserList.xml"));

}

public static void deleteUserById(String id) throws DocumentException {
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("src\\UserList.xml"));

// 获取root
Element root = doc.getRootElement();
// 获取user
Iterator<Element> userIte = root.elementIterator("user");
while (userIte.hasNext()) {
Element userEle = userIte.next();

if (id.equals(userEle.attributeValue("id"))) {
// 删除
// 方式一:先获取Element对象,调用detach()
// userEle.detach();

// 方式二:使用parent.remove(child);
userEle.getParent().remove(userEle);
}
}

// 持久化
XmlUtils.writeDocument(doc, new File("src\\UserList.xml"));
}
}