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

Dom4j操作XML文档

    博客分类:
  • Xml
阅读更多
package test;

import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
* @author guchao
*
*/
public class Dom4jDemo {

public Dom4jDemo() {

}

/**
  * 建立一个XML文档,文档名由输入参数决定
  *
  * @param filename
  *            需建立的文件名
  * @return 返回操作结果, 0表失败, 1表成功
  */

public int createXMLFile(String filename) {
  /** 返回操作结果, 0表失败, 1表成功 */
int returnValue = 0;

  /** 建立document对象 */
Document document = DocumentHelper.createDocument();
 
  /** 建立XML文档的根books */
Element booksElement = document.addElement("books");
 
  /** 加入一行注释 */
booksElement.addComment("This is a test for dom4j, holen, 2004.9.11");
 
  /** 加入第一个book节点 */
Element bookElement = booksElement.addElement("book");
 
  /** 加入show参数内容 */
bookElement.addAttribute("show", "yes");
 
  /** 加入title节点 */
Element titleElement = bookElement.addElement("title");
 
  /** 为title设置内容 */
titleElement.setText("Dom4j Tutorials");
 
  /** 类似的完成后两个book */
  bookElement = booksElement.addElement("book");
  bookElement.addAttribute("show", "yes");
  titleElement = bookElement.addElement("title");
  titleElement.setText("Lucene Studing");
  bookElement = booksElement.addElement("book");
  bookElement.addAttribute("show", "no");
  titleElement = bookElement.addElement("title");
  titleElement.setText("Lucene in Action");
 
  /** 加入owner节点 */
  Element ownerElement = booksElement.addElement("owner");
  ownerElement.setText("O'Reilly");
  try {
   /** 将document中的内容写入文件中 */
   XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));
   writer.write(document);
   writer.close();
  
   /** 执行成功,需返回1 */
   returnValue = 1;
  } catch (Exception ex) {
  ex.printStackTrace();
  }
    return returnValue;
}

/**
  * 修改XML文件中内容,并另存为一个新文件 重点掌握dom4j中如何添加节点,修改节点,删除节点
  *
  * @param filename
  *            修改对象文件
  * @param newfilename
  *            修改后另存为该文件
  * @return 返回操作结果, 0表失败, 1表成功
  */

public int ModiXMLFile(String filename, String newfilename) {
  int returnValue = 0;
  try {
  SAXReader saxReader = new SAXReader();
  Document document = saxReader.read(filename);
   /** 修改内容之一: 如果book节点中show参数的内容为yes,则修改成no */
   /** 先用xpath查找对象 */
   List list = document.selectNodes("/books/book/@show");
   Iterator iter = list.iterator();
   while (iter.hasNext()) {
   Attribute attribute = (Attribute) iter.next();
       if (attribute.getValue().equals("yes")) {
       attribute.setValue("no");
       }
   }

   /**
    * 修改内容之二: 把owner项内容改为Tshinghua
    * 并在owner节点中加入date节点,date节点的内容为2004-09-11,还为date节点添加一个参数type
    */
   list = document.selectNodes("/books/owner");
   iter = list.iterator();
   if (iter.hasNext()) {
   Element ownerElement = (Element) iter.next();
       ownerElement.setText("guchao");
       Element dateElement = ownerElement.addElement("date");
       dateElement.setText("2009-07-06");
       dateElement.addAttribute("type", "guchaoTest calendar");
   }

   /** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */
   list = document.selectNodes("/books/book");
   iter = list.iterator();
   while (iter.hasNext()) {
   Element bookElement = (Element) iter.next();
       Iterator iterator = bookElement.elementIterator("title");
       while (iterator.hasNext()) {
       Element titleElement = (Element) iterator.next();
           if (titleElement.getText().equals("Dom4j  Tutorials")) {
           bookElement.remove(titleElement);
           }
      }
   }

   try {
    /** 将document中的内容写入文件中 */
    XMLWriter writer = new XMLWriter(new FileWriter(new File(
      newfilename)));
    writer.write(document); 
    writer.close();

    /** 执行成功,需返回1 */
    returnValue = 1;

   } catch (Exception ex) {
   ex.printStackTrace();
   }
  } catch (Exception ex) {
  ex.printStackTrace();
  }
  return returnValue;
}

/**
  * 格式化XML文档,并解决中文问题
  *
  * @param filename
  * @return
  */
public int formatXMLFile(String filename) {
  int returnValue = 0;
  try {
   SAXReader saxReader = new SAXReader();
   Document document = saxReader.read(new File(filename));
   XMLWriter output = null;

   /** 格式化输出,类似IE浏览一样 */
   OutputFormat format = OutputFormat.createPrettyPrint();

   /** 指定XML字符集编码 */
   format.setEncoding("GBK");
   output = new XMLWriter(new FileWriter(new File(filename)), format);
   output.write(document);
   output.close();
  
   /** 执行成功,需返回1 */
   returnValue = 1;
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  return returnValue;
}



public static void main(String[] args) {

  Dom4jDemo temp = new Dom4jDemo();
  System.out.println(temp.createXMLFile("d:\\createXML.xml"));
  System.out.println(temp.ModiXMLFile("d:\\createXML.xml",
    "d:\\createXML1.xml"));
  System.out.println(temp.formatXMLFile("d:\\createXML1.xml"));

}

}
附上2个JAR包见附件
分享到:
评论

相关推荐

    DOM4j操作xml文件

    DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件

    dom4j读写xml文档实例

    要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...

    使用Maven管理项目,实现DOM4j操作XML文件

    DOM4j则是一个强大的Java库,用于处理XML文档,提供了丰富的API来实现XML的读取、写入、修改等操作。在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是...

    DOM4J读取XML文件

    这篇博客“DOM4J读取XML文件”可能详细介绍了如何利用DOM4J库来操作XML文档,下面我们将深入探讨DOM4J的相关知识点。 1. **DOM4J简介** DOM4J是一个开源的Java库,它基于DOM模型,但比标准的Java DOM API更易于...

    dom4j解析xml文件的压缩包

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、查询和修改变得简单。这个压缩包包含了DOM4J的完整版本,适用于那些希望在Java项目中使用DOM4J进行XML操作的开发者...

    dom4j解析xml文件(增删改查)

    在“dom4j解析xml文件(增删改查)”这个主题中,我们将深入探讨如何使用DOM4J来实现XML文档的四种基本操作:增加元素、删除元素、更新元素内容以及查询元素。 首先,让我们了解DOM4J的基本用法。在解析XML文件时,...

    详细介绍使用Dom4j读取xml文件的方法

    Dom4j便是一款功能强大且易于使用的Java库,它提供了非常简洁的API来读取、写入以及修改XML文档。本文将详细介绍如何使用Dom4j读取XML文件,并通过一个具体示例来进行深入探讨。 #### 二、环境搭建与依赖引入 在...

    读写超大类xml文件,使用dom4j读写xml文件的工具类

    基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。

    dom4j解析xml文件代码示例

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码...

    dom4j解析xml详解

    DOM4J的核心优势之一在于其丰富的接口体系,这些接口定义在`org.dom4j`包内,提供了对XML文档进行读写、查询、修改等操作的能力。 1. **Attribute**: 代表XML中的属性,可用于获取和设置属性值。 2. **Branch**: ...

    Dom4J生成XML的完整方法希望大家能用到

    Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至...

    DOM4J 读取xml字符串

    **DOM4J 读取XML字符串** DOM4J 是一个非常强大的...综上所述,DOM4J 是处理 XML 的强大工具,尤其适合于读取和操作 XML 字符串。通过学习和实践,你可以更高效地管理 XML 数据,提升你的 Java 应用程序的功能和性能。

    dom4j 解析(读取) xml 节点数据

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的方式来解析、创建、修改和操作XML数据。在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你...

    使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除...

    使用dom4j读取xml四种方法

    Dom4j作为一款简洁高效的Java库,被广泛应用于解析、操作XML文档。本文将详细介绍使用dom4j读取XML文件的四种常见方法,并通过示例代码帮助读者更好地理解和掌握这些技术。 #### 方法一:使用`SAXReader`与`...

    dom4j解析xml

    DOM4J提供了几个核心类和接口来帮助我们操作XML文档: 1. **Document**: 表示整个XML文档。 2. **Element**: 表示XML文档中的元素。 3. **Attribute**: 表示元素的属性。 4. **Text**: 表示元素中的文本内容。 5. *...

    java中用dom4j读取xml

    总之,DOM4J提供了一套完整的API来处理XML文档,包括读取、解析、遍历、修改和保存。通过学习和熟练使用DOM4J,开发者能够更高效地在Java项目中处理XML数据。不过要注意,DOM4J基于DOM模型,对于大型XML文件,内存...

    DOM4J读取XML

    DOM4J是一个轻量级、高性能且易于使用的Java库,用于处理XML文档。它提供了类似于DOM、SAX和JDOM的API,但又在其基础上进行了优化,使得在读取、写入、查询和修改XML文档时更加高效与便捷。本文将详细介绍如何使用...

Global site tag (gtag.js) - Google Analytics