xml文件的读写一(dom4j)
程序员文章站
2022-05-29 12:14:25
...
读写xml文件的方法很多,这里就简单的记录一下用dom4j读写的过程
package xmltest;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
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.SAXReader;
import org.dom4j.io.XMLWriter;
public class XMLDom4j {
/**
* 读取xml文件
* @param fileName
*/
public void readXMLFile(String fileName){
ClassLoader loader = XMLDom4j.class.getClassLoader();
Object path = loader.getResource(fileName);
//如果文件不存在就创建一个
if(path == null){
return;
}
SAXReader reader = new SAXReader();
InputStream is;
try {
is = new FileInputStream("D:/NewWorkSpace/SampleWebTest/WebRoot/WEB-INF/classes/books.xml");
Document doc = reader.read(is);
Element root = doc.getRootElement();
Element data;
Iterator<UserInfo> itr = root.elementIterator("user");
while(itr.hasNext()){
data = (Element) itr.next();
System.out.println(data.attributeValue("name"));
System.out.println(data.elementText("age"));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 保存xml文件
* @param fileName
* @param userList
*/
public void saveXMLFile(String fileName,List<UserInfo> userList){
ClassLoader loader = XMLDom4j.class.getClassLoader();
Object path = loader.getResource(fileName);
//如果文件不存在就创建一个
if(path == null){
createXMLFile(fileName);
}
//把list里面的元素添加到xml文件里面
Document document = DocumentHelper.createDocument();// 创建一个xml document对象
Element users = document.addElement("Users");// 创建根节点元素
for(int i=0;i<userList.size();i++){
UserInfo userInfo = userList.get(i);
Element user = users.addElement("user");
user.addAttribute("name", userInfo.getName());
Element age = user.addElement("age");
age.setText(userInfo.getAge());
Element sex = user.addElement("sex");
sex.setText(userInfo.getSex());
}
try {
// 创建一个xml写入流,将生成的xml文件写入指定的文件中
// 使用优雅的方式写入(一共有三种方式:普通方式,优雅方式和紧凑方式)
//紧凑方式写入format = OutputFormat.createCompactFormat();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter output = new XMLWriter(
new FileWriter(new File("src/books.xml")), format);
output.write(document);
output.close();
}
catch (IOException e) {
System.out.println(e.getMessage());
}
}
/**
* 创建一个xml文件
* @param fileName
*/
public void createXMLFile(String fileName){
Document document = DocumentHelper.createDocument();// 创建一个xml document对象
Element users = document.addElement("Users");// 创建根节点元素
// XML 声明 <?xml version="1.0" encoding="UTF-8"?> 自动添加到 XML 文档中。
try {
// 创建一个xml写入流,将生成的xml文件写入指定的文件中
// 使用优雅的方式写入(一共有三种方式:普通方式,优雅方式和紧凑方式)
//紧凑方式写入format = OutputFormat.createCompactFormat();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter output = new XMLWriter(
new FileWriter(new File("src/books.xml")), format);
output.write(document);
output.close();
}
catch (IOException e) {
System.out.println(e.getMessage());
}
}
public static void main(String args[]){
XMLDom4j xmldom4j = new XMLDom4j();
List<UserInfo> userList = new ArrayList<UserInfo>();
for(int i=0;i<5;i++){
UserInfo u = new UserInfo();
u.setAge("age"+i);
u.setName("name"+i);
u.setSex("sex"+i);
userList.add(u);
}
//xmldom4j.saveXMLFile("userInfo.xml", userList);
xmldom4j.readXMLFile("books.xml");
}
}
上一篇: Linux Mysql知识学习篇