`
gudujianxuehu
  • 浏览: 96177 次
  • 来自: ...
社区版块
存档分类
最新评论

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(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成功");
   }
 
}
}
分享到:
评论

相关推荐

    dom4j使用教程

    dom4j使用教程 感觉很好 与大家共享

    dom4j使用教程+dom4j.jar

    收集于网络的dom4j解析使用,包括创建,修改,删除等并且有jar文件一同上传

    DOM4J帮助文档及使用教程

    这个压缩包是一个关于DOM4J的压缩包,里面包含了DOM4J的帮助文档,DOM4J的使用教程,以及DOM4J这个JAVA包。保证这个压缩包是网上面最全的有关DOM4J的文档。

    dom4j 简单教程

    本人总结的dom4j使用方法,希望能帮助刚刚接触的朋友。

    dom4j的使用教程

     DOM4J使用起来非常简单。只要你了解基本的XML-DOM模型,就能使用。然而他自己带的指南只有短短一页(html),不过说的到挺全。国内的中文资料很少。因而俺写这个短小的教程方便大家使用,这篇文章仅谈及基本的用法...

    DOM4j教程 例子

    DOM4j教程 例子 DOM4j教程 例子 DOM4j教程 例子 DOM4j教程 例子

    dom4j框架解析教程

    dom4j技术教程,dom4j是一个很好的解析xml文档的框架

    Dom4j学习教程+API

    很好的Dom4j学习教程及API,供大家学习使用

    Dom4j 学习教程

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

    《Dom4j_教程网页收集》

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

    dom4j下载及使用方式

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

    dom4j教程 java

    自用 网上搜罗来的一些dom4j的教程

    dom4j教程,详细文档

    dom4j的使用教程,里面包括了java编程的部分例子。

    dom4j教程.pdf

    Dom4j教程 很实用,希望对你有所帮助,如果你觉得还不错的话,记得给好评哦!

    Dom4j下载及使用Dom4j读写XML简介

    Dom4j解析教程。详细讲解如何使用dom4j解析xml,简单易懂。

    dom4j教程

    我在做项目的时候,要解析XML就用DOM4J只可惜没有好的教程,现在有了,特意分享给大家,希望一起学习快乐!!!

    dom4j从基础到精通.pdf dom4j详解 dom4j教程

    dom4j从基础到精通.pdf dom4j详解 dom4j教程。Java技术交流Q:11083269.

    xml解析器-dom4j的支持包_ 教程

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件...如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包, Hibernate用它来读写配置文件。

    dom4j 中文版教程 pdf格式

    dom4j中文版教程,相信对大家都很用用吧

    Dom4j学习教程API.rar

    Dom4j学习教程APIDom4j学习教程API.rar

Global site tag (gtag.js) - Google Analytics