欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

 

相关标签: java xml dom4j