xml文件的读写一(dom4j)

读写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");
	}
}

 

你可能感兴趣的:(java,xml,dom4j)