`
Virgo_S
  • 浏览: 1150858 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DOM4j使用教程

    博客分类:
  • JAVA
阅读更多
DOM4j是一个易用的,开源的JAVA操作XML的API,写过一篇4种XML操作API的比较,DOM4j是性能和易用行最佳的。因此做一个小教程,供初学者学习。

学习DOM4j首先就先来了解下它主要的包
DOM4j所有的接口都在org.dom4j这个包里定义着

org.dom4j.Attribute : Attribute接口定义了XML文件的属性
org.dom4j.Branch  : Branch为能够包含子节点的节点如XML元素和文档定义了一个公共行为
org.dom4j.CDATA  : CDATA定义了XML CDATA区域
org.dom4j.CharacterData: CharacterData是一个标识接口,标识基于字符的节点。
org.dom4j.Comment  : Comment定义了XML注释的行为
org.dom4j.Document : Docement接口定义了XML文档
org.dom4j.Element   : Element定义了XML元素
org.dom4j.ElementHandler: ElementHandler定义了Element对象的处理器
org.dom4j.ElementPath : 被ElementHandler使用,用于取得当前正在处理的路径层次信息
org.dom4j.Entity : Entity定义XML entity
org.dom4j.Node :   Node为所有的dom4j中XML节点定义了多态行为
org.dom4j.NodeFilter :  NodeFilter定义了在dom4j节点中产生的一个滤镜或谓词的行为
org.dom4j.ProcessingInstruction : ProcessingInstruction定义XML处理指令
org.dom4j.Text   : Test定义了XML文本节点
org.dom4j.Visitor : Visitor用于实现Visitor模式
org.dom4j.XPath : XPath在分析一个字符串后会提供一个XPath表达式

下面说下主要的实用方法

1:  读取并解析XML文档:
读写XML文档主要依赖于org.dom4j.io包,提供了DOMReader和SAXReader两类不同方式,调用方式一样。

// 从文件读取XML,输入文件名,返回XML文档
    public Document read(String fileName) throws MalformedURLException, DocumentException {
		SAXReader reader = new SAXReader();
	    Document document = reader.read(new File(fileName));
	    return document;
    }

2:取得ROOT节点
   如果要读取一个XML文件,最重要的就是要读取ROOT节点了,一切分析XML都是从ROOT节点开始。
    
   
public Element getRootElement(Document doc){
        return doc.getRootElement();
    }


3:遍历XML树,这里有二种方法
   (1): 枚举
   
// 枚举所有子节点 
    for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
       Element element = (Element) i.next();
       // do something
    }
    // 枚举名称为foo的节点
    for ( Iterator i = root.elementIterator(foo); i.hasNext();) {
       Element foo = (Element) i.next();
       // do something
    }
    // 枚举属性
    for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
		Attribute attribute = (Attribute) i.next();
		// do something
    }


  (2) :  递归
   
public void treeWalk() { 
       treeWalk(getRootElement());
    }
    public void treeWalk(Element element) {
		for (int i = 0, size = element.nodeCount(); i < size; i++){
			Node node = element.node(i);
			if (node instanceof Element) {
              treeWalk((Element) node);
			} 
		   else { 
				// do something....
           }
		}
	}


4:字符串与XML的转换
// XML转字符串 
  	Document document = ...;
    String text = document.asXML();
	// 字符串转XML
    String text = James ;
    Document document = DocumentHelper.parseText(text);


5. 创建XML
   
//这里创建一个XML,没有写
    public Document createDocument() { 
		Document document = DocumentHelper.createDocument();
		Element root = document.addElement(root);
		Element author1 =
			root
              .addElement(author)
              .addAttribute(name, James)
              .addAttribute(location, UK)
              .addText(James Strachan);
		Element author2 =
			root
              .addElement(author)
              .addAttribute(name, Bob)
              .addAttribute(location, US)
              .addText(Bob McWhirter);
		return document;
    }

6: XML 文件输出
FileWriter out = new FileWriter( foo.xml ); 
    document.write(out);

  

    DOM4j 的简单常用的方法上面总结了下,大家可以有一个印象,想要学的仔细了就要自己好好研究了,下面有一个以前写的小程序,实现了创建和编辑XML文件的功能。

   
package com.dom4j.test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
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 NewXML {
 /**
  * 
  * 用DOM4J创建一个XML文件
  * @param args
  */
 
public boolean newXMl(String fileName){
	boolean returnValue=false;
	//定义一个XML文档
	Document docement=DocumentHelper.createDocument();
	//设置XML文档的元素
	Element rootElement=docement.addElement("DOM4J创建XML文档");
	rootElement.addComment("镜花水月2007-4-24晚上创建");
	Element nameElement=rootElement.addElement("镜花水月");
	nameElement.addAttribute("名字","不告诉你");
	Element schoolElement=nameElement.addElement("学校");
	schoolElement.setText("西安翻译学院");
	Element cityElement=rootElement.addElement("城市");
	cityElement.setText("上海");
	Element homeElement=cityElement.addElement("住址");
	homeElement.setText("徐家汇");
	//创建XML文档 
	try {
		/** 格式化输出,类型IE浏览一样 */
		OutputFormat format = OutputFormat.createPrettyPrint();
		/** 指定XML编码 */
		format.setEncoding("GBK");
		XMLWriter writer=new XMLWriter(new FileWriter(new File(fileName)),format); 
		writer.write(docement);
        writer.close();
		return returnValue=true;   
	} catch (IOException e) {
		e.printStackTrace();
	}
	return returnValue;
 }
 
 /**
  * 
  * 用DOM4J修改一个XML文件
  * @param args
  * 
  */ 
 public boolean update(String fileName,String newFileName){
  
  boolean returnValaue=false;
  
  
  
  SAXReader reader=new SAXReader();
  
  try {
   Document docement=reader.read(new File(fileName));
   
   List list=null;
   
   list=docement.selectNodes("/DOM4J创建XML文档/镜花水月/@名字");
   
   Iterator it=list.iterator();
   
   while(it.hasNext()){
    Attribute attribute=(Attribute) it.next();
    if(attribute.getValue().equals("不告诉你")){
     attribute.setValue("还是不告诉你");
    }
   }
   
   //将就该写入新的文件 
   
   try {
    //转码
    OutputFormat format=OutputFormat.createPrettyPrint();
    
    format.setEncoding("GBK");
    
    XMLWriter writer=new XMLWriter(new FileWriter(new File(newFileName)),format);
    
    writer.write(docement);
    
    writer.close();
    
    return returnValaue=true;
    
   } catch (IOException e) {
    
    e.printStackTrace();
   }
   
   
  } catch (DocumentException e) {
   
   e.printStackTrace();
  }
  
  return returnValaue;
 }
 public static void main(String[] args) {
  
  NewXML newXml=new NewXML();
  
  String name="newXML.xml";
  
  String newName="UpdateXML.xml";
  
  if(!newXml.newXMl(name)){
   System.out.println("创建出现错误!");
   return ;
  }else{
   System.out.println("创建XML成功!");
  }
  
  if(!newXml.update(name,newName)){
   System.out.println("修改出现错误!");
   return;
  }else{
   System.out.println("修改XML成功");
  }
  
 }
}



<?xml version="1.0" encoding="GBK"?>

<DOM4J创建XML文档>
  <!--镜花水月2007-4-24晚上创建-->
  <镜花水月 名字="不告诉你">
    <学校>西安翻译学院</学校>
  </镜花水月>
  <城市>上海
    <住址>徐家汇</住址>
  </城市>
</DOM4J创建XML文档>

分享到:
评论

相关推荐

    dom4j使用教程+dom4j.jar

    **DOM4J使用教程** DOM4J是一款非常优秀的Java XML API,它提供了全面而强大的功能,包括XML的解析、创建、修改以及查询等操作。在Java世界中,DOM4J因其简单易用和高效性而备受青睐。这篇教程将深入探讨DOM4J的...

    dom4j使用教程

    下面将详细讲解DOM4J的主要特性和使用方法。 ### 1. DOM4J的基本概念 - **Document**: XML文档的根节点,表示整个XML结构。 - **Element**: 表示XML文档中的元素,每个元素都有一个标签名,可以包含属性和子元素。...

    dom4j 简单教程

    ### DOM4j 使用详解 #### 一、简介 DOM4j是一种用于处理XML文档的Java库,它提供了灵活且高效的方式来解析、修改和创建XML文件。相比于标准的DOM和SAX API,DOM4j提供了更加简洁易用的API,使得开发者能够更轻松地...

    DOM4J帮助文档及使用教程

    通过阅读和实践DOM4J的帮助文档和使用教程,开发者可以全面掌握DOM4J的各种特性和用法,从而更高效地处理XML数据。这个压缩包提供的资料全面且详细,对于想要深入理解DOM4J的Java开发人员来说,是一份非常宝贵的资源...

    dom4j jar包 和 教程

    例如,`DOM4j使用教程 - 关于WEB开发的思考之JAVA技术O_Lions - JavaEye技术网站.mht`和`DOM4J使用教程 - - JavaEye技术网站.mht`可能是两篇关于DOM4j的教程文章,详细介绍了如何在Web开发中使用DOM4j。而`dom4j-...

    Dom4j学习教程+API

    **Dom4j学习教程+API** Dom4j是一款强大的Java XML处理库,它提供了一种灵活的方式来处理XML文档。这个教程结合API文档,为开发者提供了深入理解并掌握Dom4j的绝佳资源。以下是对Dom4j核心概念和功能的详细说明。 ...

    DOM4j教程 例子

    ### DOM4j 教程与实例详解 #### 一、DOM4j简介 DOM4j是一种用于处理XML的Java API,其设计目的是提供一个高效、功能丰富且易于使用的API。DOM4j是一个开源项目,可以在SourceForge等开源平台上获取到。DOM4j不仅在...

    dom4j教程.pdf

    #### 四、DOM4j使用示例 下面是一个简单的示例,演示如何使用DOM4J来读取XML文件: ```java import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Dom4jExample {...

    dom4j_1.6.1.jar dom4j_2.1.0.jar

    这个标签直接关联了DOM4J库的核心文件,表明讨论的内容与DOM4J的使用和特性有关。 **文件名称列表:xml** 这个列表只包含了一个条目"xml",可能意味着压缩包中包含的是与XML相关的文件或资源,可能是XML示例文件、...

    dom4j教程 java

    DOM4J在Java社区中被广泛使用,尤其是在处理大型XML文档时,其性能表现优于标准的DOM API。 在XML解析方面,DOM4J支持多种模式,包括SAX(Simple API for XML)和DOM。SAX是事件驱动的解析器,适合处理大文件,因为...

    dom4j教程

    DOM4J在Java社区中被广泛使用,尤其是在Spring框架中,用于配置文件的解析。在这个教程中,我们将深入探讨DOM4J的核心概念和常见操作。 1. **XML解析**:DOM4J支持SAX和DOM两种解析方式。SAX是事件驱动的解析,适用...

    Dom4j 学习教程

    Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j学习教程Dom4j...

    《Dom4j_教程网页收集》

    《Dom4j_教程网页收集》 《Dom4j_教程网页收集》 《Dom4j_教程网页收集》

    使用dom4j和jaxen解析xml

    - **dom4j+jaxen操作XML**:首先使用dom4j解析XML,然后通过jaxen创建XPath对象并执行查询。查询结果可以是元素、属性或其他XML节点,根据需要进行进一步处理。 例如,以下代码展示了如何使用dom4j和jaxen解析XML...

    dom4j需要的包

    学习帮助文档`0_02013011112572651533851383.chm`通常是一个Windows系统的帮助文件,可能包含了DOM4J的详细教程、API参考和示例代码,对于初学者来说是非常有价值的资源。CHM文件是Microsoft编写的HTML帮助格式,...

    dom4j-jar与dom4j解析xml文档介绍

    **PDF文档说明**:这个PDF文档可能是dom4j的官方用户指南或教程,包含了详细的API使用示例、最佳实践和常见问题解答。对于初次接触dom4j的开发者来说,这是一个宝贵的资源,可以帮助他们快速理解和掌握dom4j的使用...

    dom4j下载及使用方式

    dom4j下载dom4j下载dom4j下载dom4j下载dom4j下载dom4j下载dom4j下载dom4j下载dom4j下载

Global site tag (gtag.js) - Google Analytics