xml解析与写入

来源 http://hillen-chan.iteye.com/blog/870365
package com.dheaven.mip.item;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;

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 Dom4jDemo implements XmlDocument {


	/* (non-Javadoc)写入xml
	 * @see com.dheaven.mip.item.XmlDocument#createXml(java.lang.String)
	 */
	public void createXml(String fileName) { 
		//创建document对象
		Document document=DocumentHelper.createDocument();
		//为document对象添加一级节点
		Element students=document.addElement("students");
		//在一级节点下添加二级节点
		Element student=students.addElement("student");
		Element name=student.addElement("name");
		name.setText("刘德华");
		Element sex=student.addElement("sex");
		sex.setText("男");
		try {
			/*直接通过write方法输出,如下,此时输出的xml文件中为默认的UTF-8编码,没有格式,空格也没有去除,实际上就是一个字符串;*/
			Writer fileWriter=new FileWriter(fileName);
//			XMLWriter xmlWriter=new XMLWriter(fileWriter);    
			 
			/* 用XMLWriter类中的write方法,此时可以自行设置输出格式,比如紧凑型、缩减型:此时输出的xml文件中为gb2312编码,缩减型格式,但是多余的空格已经被清除:*/
			 OutputFormat format = OutputFormat.createPrettyPrint();//缩减型格式
			 //OutputFormat format = OutputFormat.createCompactFormat();//紧凑型格式
			 format.setEncoding("gb2312");//设置编码
			 //format.setTrimText(false);//设置text中是否要删除其中多余的空格
			 XMLWriter xmlWriter=new XMLWriter(fileWriter,format);
			 
			 /*如果想要对xml文件的输出格式进行设置,就必须用XMLWriter类,但是我们又需要保留其中的空格,此时我们就需要对format进行设置,也就是加上一句format.setTrimText(false);
这样就可以既保持xml文件的输出格式,也可以保留其中的空格;element中attribute中的值如果有空格的话在任何情况下是都不会去除空格的;*/
			 xmlWriter.write(document);
			 xmlWriter.close(); 
		} catch (IOException e) {
			e.printStackTrace();
		}  
		
	} 
	

	
	/* (non-Javadoc)解析xml文件
	 * @see com.dheaven.mip.item.XmlDocument#parserXml(java.lang.String)
	 */
	public void parserXml(String fileName) { 
		File inputXml=new File(fileName);   
		SAXReader saxReader = new SAXReader();   
		try {   
			Document document = saxReader.read(inputXml);   
			Element employees=document.getRootElement();   
			for(Iterator i = employees.elementIterator(); i.hasNext();){   
				Element employee = (Element) i.next();   
				for(Iterator j = employee.elementIterator(); j.hasNext();){   
					Element node=(Element) j.next();   
					System.out.println(node.getName()+":"+node.getText());   
				}   
			}   
		} catch (DocumentException e) {   
			System.out.println(e.getMessage());   
		}   
	}   
} 

你可能感兴趣的:(xml解析)