`
persistC
  • 浏览: 73085 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

dom4j初学入门

阅读更多
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 = <person> <name>James</name> </person>;   
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(JamesStrachan);       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成功");
   }
  }}

分享到:
评论

相关推荐

    dom4j入门资料全.rar

    **标题解析:** "dom4j入门资料全.rar" 这个标题表明这是一个关于dom4j初学者的综合资源包,包含多种类型的资料,可能是为了帮助用户快速掌握dom4j这个Java库的基础知识。 **描述解析:** "包含jar,电子书,网页...

    我写的几个dom4j的入门例子.rar

    在这个"我写的几个DOM4J的入门例子"中,我们可以看到一系列的示例,涵盖了XML文件的读取和写入等基本操作。 1. **XML读取**: - `books.xml`、`sql.xml`、`data.xml`、`xml002.xml`和`xml003.xml`这些文件很可能是...

    dom4j入门例子

    在本文中,我们将深入探讨DOM4J的基础用法,帮助初学者快速入门。 **1. 安装与引入** 在开始使用DOM4J之前,首先需要将DOM4J库引入到项目中。如果你使用的是Maven,可以在pom.xml文件中添加如下依赖: ```xml ...

    一个简单的Dom4j学习的例子

    " 表明这是一个入门级的教程,旨在通过实例代码来帮助初学者理解Dom4j的基本用法,并鼓励互动讨论,以便共同学习和进步。 **标签解析:** "dom4j, java, xml, sax" 提供了相关的技术关键词。dom4j是我们关注的核心...

    dom4j 英文api和htmldom教程下载

    - `HTML DOM 教程.CHM`:这个教程涵盖了HTML DOM的基础知识,包括节点操作、事件处理等,适合初学者入门。 通过深入了解DOM4J和HTML DOM,开发者可以更好地处理XML和HTML文档,提高应用程序的灵活性和交互性。结合...

    DOM4J很全的学习资料知识点讲解加上例子

    本资料集合了DOM4J的全面学习知识点,并配以实例,旨在帮助初学者快速入门并提供给进阶者详实的参考。 1. **DOM4J的基本概念**: - DOM4J的核心是Element、Attribute、Document等对象,它们分别代表XML中的元素、...

    一写小例子,dom4J,dom,jdom,sax解析和创建XML文件,代码虽然简单,但是功能实现,适合入门

    本文将详细介绍四种主流的Java XML处理库:DOM4J、DOM、JDOM和SAX,并通过简单的代码示例帮助初学者入门。 1. DOM (Document Object Model) DOM是W3C制定的一种标准,它将XML文档视为一个树形结构,允许开发者通过...

    dom4j-1.6.1

    "玄关的文档"可能是指入门或引导性质的教程文档,帮助初学者快速理解和上手dom4j。 **标签:** "dom4j"标签明确了这个压缩包的核心内容,即与dom4j相关的知识和技术。 **文件名称列表:** 虽然未提供具体的文件...

    dom4j各种中文api解析

    - **DOM4J使用简介.doc**: 提供了dom4j的基础使用介绍,适合初学者入门。 - **dom4j中文教程26more.rar**: 可能包含26个以上的教程,深入讲解dom4j的各种功能。 - **Dom4jXML**: 可能是一个包含XML处理示例的项目...

    开源框架《web+dom4j专题》

    本专题《web+dom4j》聚焦于Web开发领域,并结合了强大的XML处理库dom4j,旨在帮助初学者快速入门并掌握这两项技术。 首先,我们要了解Web开发的基础。Web开发主要是构建可以通过互联网访问的应用程序,这些应用程序...

    网站需要的api合集

    2. DOM4J:DOM4J是一个流行的Java XML处理库,它提供了灵活且强大的API来操作XML文档。开发者可以通过DOM4J进行XML文档的读取、写入、修改和查询。掌握DOM4J可以帮助你在Java项目中高效地处理XML数据。 3. ...

    XML基础知识

    XML的处理方式主要有三种:SAX、DOM以及DOM4J,它们各有优势和适用场景: - **SAX(Simple API for XML)**:这是一种基于事件驱动的模型,适合于处理大型的XML文件。SAX逐行读取并解析XML文件,因此在内存占用上比...

    Hibernate入门jar包

    - `dom4j.jar`或`jdom.jar`:XML处理库,Hibernate的HQL查询结果集转换为XML时会用到。 - `slf4j-api.jar`和相应的实现(如`slf4j-log4j12.jar`):日志记录框架,Hibernate使用它来输出日志信息,便于调试和监控...

    Hibernate入门教程

    3. **必要和建议的jar库**:除了hibernate2.jar之外,还有多个jar库是必需的或建议使用的,如dom4j、CGLIB、CommonsCollections、CommonsLogging、ODMG4、EHCache以及Log4j。 - **dom4j**:用于XML解析,是...

    xml入门案例源码

    此外,JDOM和DOM4J是Java中常见的DOM实现库,可能会出现在案例中。 7. **XML在Web服务中的应用**:在SOAP(Simple Object Access Protocol) Web服务中,XML用于封装请求和响应消息。源码可能包含使用Java的JAX-WS...

    hibernate3入门

    此外,还需要其他依赖库如`antlr`, `dom4j`, `CGLIB`, `asm`, `CommonsCollections`, `CommonsLogging`, `EHCache`以及`JavaTransactionAPI`(即`jta.jar`),这些依赖库确保Hibernate能够正常运行。 如果是在单机...

    jQuery中文入门指南

    《jQuery中文入门指南》是一份面向初学者的教程,旨在帮助读者快速掌握jQuery的基本用法。该指南由Keel翻译并添加了补充说明,主要内容基于原文作者Jörn Zaefferer的作品。学习jQuery的过程中,建议参考两个重要的...

Global site tag (gtag.js) - Google Analytics