`

XML解析之DOM4J

    博客分类:
  • j2ee
 
阅读更多

1. 简介

java的xml解析分为:

Dom

Dom4j

Jdom

Sax等

 

2. 比较常用

 1)DOM4J性能最好,连Sun的JAXM也在用DOM4J.目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.


    2)JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM.虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在 JavaScript中使用DOM)。

    3)SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。

 

3.Dom4J例子

 

接口

package com.jason.xml;

public interface XmlDocument {
	/** 
	* 建立XML文档 
	* @param fileName 文件全路径名称 
	*/ 
	public void createXml(String fileName); 
	/** 
	* 解析XML文档 
	* @param fileName 文件全路径名称 
	*/ 
	public void parserXml(String fileName); 
}

  操作类

package com.jason.xml.dom4j;

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.SAXReader;
import org.dom4j.io.XMLWriter;

import com.jason.xml.XmlDocument;
/**  
*   
* Dom4j 生成XML文档与解析XML文档  
*/  
public class Dom4jDemo implements XmlDocument {   
	
	/**
	 * 生成XML
	 */
	public void createXml(String fileName) {   
		Document document = DocumentHelper.createDocument();   
		Element employees=document.addElement("employees");   
		Element employee=employees.addElement("employee");   
		Element name= employee.addElement("name");   
		name.setText("ddvip");   
		Element sex=employee.addElement("sex");   
		sex.setText("m");   
		Element age=employee.addElement("age");   
		age.setText("29");   
		try {   
			Writer fileWriter=new FileWriter(fileName);   
			XMLWriter xmlWriter=new XMLWriter(fileWriter);   
			xmlWriter.write(document);   
			xmlWriter.close();   
		} catch (IOException e) {   
			System.out.println(e.getMessage());   
		}   
	}   

	/**
	 * 解析XML
	 */
	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());   
		}   
		System.out.println("dom4j parserXml");   
	}   
	
	public static void main(String[] args){
		Dom4jDemo dd = new Dom4jDemo();
		String fileName = "E:\\Workspace\\projects\\J2EEStudy\\src\\xml\\com\\jason\\xml\\dom4j\\e.xml";
		dd.parserXml(fileName);
		String fileName1 = "E:\\Workspace\\projects\\J2EEStudy\\src\\xml\\com\\jason\\xml\\dom4j\\d.xml";
		dd.createXml(fileName1);
	}
}  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics