利用DOM4J在java环境下读写xml文件的方法

原创 2014年04月25日 16:03:33

在java环境下读取xml文件的方法主要有5种:DOM、SAX、JDOM、JAXB、dom4j,最常用、最好用的dom4j。

dom4j在xml解析方面是性能最好的,hibernate等框架都使用它作为解析的工具。   
要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/ 目前最新dom4j包下载地址:

http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip  
解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar 

在实际应用中需要遍历整个XML文档,可以利用访问者(Visitor)模式的应用。Visitor模式通常用于处理对象树结构,树中的每一个节点对象都可以接受一个Visitor对象,节点对象向Visitor传递自身,而Visitor反过来则调用节点对象的操作。
    在Visitor接口中,重载了所有节点访问的visit方法,例如:
        public void visit(Element node);
        public void visit(Attribute node);
        ......
    在Node接口中,定义了一个accept()方法,例如:
        public void accept(Visitor visitor);
    所以节点都是继承了accept()方法,在这个方法中,visitor.Visit(this),向visitor对象传递自身。而且,在dom4j中的Element的accept()方法采用递归操作实现了遍历节点的功能。
    此外,另一个类VisitorSupport类对Visitor接口空实现,可以继承此类,然后实现相应的方法就可以了。

Example:

XML:

<?xml version="1.0" encoding="GB2312"?>    
<?xml-stylesheet type="text/xsl" href="students.xsl"?> 
<students>   
    <student sn="01">   
        <name>张三</name> 
        <age>18</age> 
    </student>       
    <student sn="02">   
        <name>李四</name> 
        <age>20</age>  
    </student> 
</students>
Parse.java

import java.io.File;   
import org.dom4j.Attribute;
import org.dom4j.Document;   
import org.dom4j.DocumentException; 
import org.dom4j.Element;   
import org.dom4j.ProcessingInstruction;
import org.dom4j.VisitorSupport; 
import org.dom4j.io.SAXReader;
        public class Parse {
		public static void main(String[] args) {
			SAXReader reader = new SAXReader();//通过SAXReader从文件读取XML文档
			File file = new File("src/students.xml");
			try {   
                                   Document doc = reader.read(file);
                                   doc.accept(new MyVistor());//调用accept方法,接受一个访问者对象
			} catch (DocumentException e) {   
				 e.printStackTrace(); 
		 	} 
		} 
	public static class MyVistor extends VisitorSupport { 
		public void visit(Attribute node) {   //对于属性节点
			System.out.println("Attibute:---" + node.getName() + "="+ node.getValue()); 
		} 
		public void visit(Element node) { //对于元素节点,判断是否只包含文本内容,如是,则打印元素的名称和内容,如不是,则只打印元素的名字
 			if (node.isTextOnly()) {   
				System.out.println("Element:---" + node.getName() + "="+ node.getText());
			}else{   
				System.out.println("--------" + node.getName() + "-------");
			}
		} 
		@Override   
		public void visit(ProcessingInstruction node) { //对于处理指定节点,打印目标和数据
			System.out.println("PI:"+node.getTarget()+" "+node.getText());
		} 
	}
}

使用dom4j来将属性写入xml:

import java.io.FileWriter;
import java.io.IOException;
import org.dom4j.Document;   
import org.dom4j.DocumentHelper; 
import org.dom4j.Element;   
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter; 
public class DWriter {
	public static void main(String[] args) {
		try {   
			XMLWriter writer = new XMLWriter(new FileWriter("src/author.xml"));   
			Document doc = createDoc();
			writer.write(doc);
			writer.close(); 
			// Pretty print the document to System.out   
			// 设置了打印的格式,将读出到控制台的格式进行美化   
			OutputFormat format = OutputFormat.createPrettyPrint();
			writer = new XMLWriter(System.out, format);
			writer.write(doc);
			} catch (IOException e) {   
			e.printStackTrace();
			}
		} 
	public static Document createDoc() {   
		Document doc = DocumentHelper.createDocument();
		Element root = doc.addElement("root");   
		Element author1 = root.addElement("author").addAttribute("name","Kree").addAttribute("location", "UK").addText("Kree Strachan");
		Element author2 = root.addElement("author").addAttribute("name", "King").addAttribute("location", "US").addText("King McWrirter");
		return doc; 
	}
}

使用dom4j写入到author.xml文件的内容

<?xml version="1.0" encoding="UTF-8"?>
<root>   
<author name="Kree" location="UK">Kree Strachan</author>
<author name="King" location="US">King McWrirter</author>
</root> 









JAVA 使用Dom4j 解析XML

解析XML的方式有很多,本文介绍使用dom4j解析xml文件
  • yyywyr
  • yyywyr
  • 2014年08月03日 18:01
  • 77519

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Java中最简单的把数据写入xml文件的方法----jdom之xml操作

一个在Java中用jdom生成xml文档的方法,需要导入jdom的jar包,可用于将数据库中或者其他数据循环输出到一个xml文档中。...

Java读取xml文件的四种方法

xml文件:   Xml代码                A1234    河南省郑州市            B1234    河南省郑州市二七...

Dom4J对XML文件的读取和写入

dom4j是一个对XML文件的读取和写入,初学者写的一篇小文章。

Java利用dom4j读写xml文件的简易实现

利用dom4j来读写xml文件.

QT调用Winrar软件压缩、解压缩时需要注意的情况

关于QT调用winrar软件,就是把winrar软件安装包下的WinRAR.exe程序拷贝到你的程序目录中,执行条cmd命令,关于怎么执行cmd命令的问题,请看我的上一篇日志: 解决QProcess...
  • ymc0329
  • ymc0329
  • 2011年09月20日 10:09
  • 4605

vs2010下使用nmake编译库的注意事项

1.要想客户端程序能够断点调试到

dom4j读写xml文件方法和具体实现代码(提供jar包下载)

dom4j读写xml文件以及dom4j的jar包下载

Java读写XML文件(DOM4J包)

Java读写XML文件。使用DOM4J.jar包
  • Zen99T
  • Zen99T
  • 2016年04月30日 01:09
  • 973
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用DOM4J在java环境下读写xml文件的方法
举报原因:
原因补充:

(最多只允许输入30个字)