`
谷超
  • 浏览: 164364 次
  • 性别: 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")...

    Dom4j解析XML文档.doc

    在本文中,我们将深入探讨如何使用DOM4J来解析和操作XML文档。 首先,要使用DOM4J,你需要下载其库文件。官方站点位于http://www.dom4j.org,你可以在这里找到最新的DOM4J包,例如dom4j-1.6.1.zip。解压缩后,你会...

    使用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文件时,...

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

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

    dom4j解析xml文件代码示例

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

    DOM4J 读取xml字符串

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

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

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

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

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

    dom4j解析XML文件格式

    dom4j解析XML文件格式dom4j解析XML文件格式dom4j解析XML文件格式

    java中用dom4j读取xml

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

    dom4j操作xml文件

    DOM4J是基于DOM模型的,DOM(Document Object Model)是XML文档的一种树状表示,它将XML文档转换为一系列节点,可以方便地进行遍历和操作。 二、DOM4J安装与导入 要使用DOM4J,首先需要将其添加到你的项目依赖中。...

    通过Dom4j创建和读取xml文件下载

    在Java编程中,DOM4J是一个非常流行的XML处理库,它提供了一套强大的API来创建、解析和操作XML文档。本教程将详细讲解如何利用DOM4J进行XML文件的创建和读取。首先,我们需要了解DOM4J的核心概念,如Element、...

    dom4j操作xml

    DOM4J通过创建一个对象模型来表示XML文档,使得我们可以像操作Java对象一样操作XML元素。 1. **XML解析**: - 使用`DocumentBuilderFactory`和`DocumentBuilder`类可以将XML字符串转换为`Document`对象,这是DOM4J...

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

    "dom4j-jar与dom4j解析xml文档介绍" 这个标题告诉我们,我们将探讨的是一个关于dom4j库的jar文件,以及如何使用这个库来解析XML文档。dom4j是一个Java库,它提供了丰富的API用于处理XML、HTML和DOM文档。这里的"jar...

    利用Dom4j生成XML和解析XML

    在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j 生成 XML 文档非常简单。首先,我们需要创建一个 Document 对象,然后添加元素和属性。下面是一个生成 XML 文档的...

    读取XML文件的四种方法

    缺点:DOM4J方法需要将整个XML文档加载到内存中,因此对于大型XML文件可能会出现性能问题。 JDOM JDOM是基于Java的XML解析器,它提供了高效、灵活的XML解析方式。使用JDOM方法读取XML文件,需要创建SAXBuilder对象...

Global site tag (gtag.js) - Google Analytics