`
jxh118
  • 浏览: 124886 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

dom4j入门程序

    博客分类:
  • XML
阅读更多

package com.holen.dom4j;

 

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 Holen Chen

 */

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(new File(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("Tshinghua");

               Element dateElement = ownerElement.addElement("date");

               dateElement.setText("2004-09-11");

               dateElement.addAttribute("type","Gregorian 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://holen.xml"));

        System.out.println(temp.ModiXMLFile("d://holen.xml","d://holen2.xml"));

        System.out.println(temp.formatXMLFile("d://holen2.xml"));

    }

}


分享到:
评论

相关推荐

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

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

    DOM4j教程 例子

    很多Java应用,尤其是那些需要处理XML的应用程序,都会选择使用DOM4j作为其核心工具之一。 #### 二、DOM4j的主要接口 DOM4j中的主要接口分布在`org.dom4j`包下,这些接口构成了DOM4j的核心功能。下面将详细介绍...

    dom4j完整版.zip

    压缩包中的“使用说明.txt”很可能是DOM4J的快速入门指南或API参考,它可能包含了如何导入库、创建XML文档、执行XPath查询、修改XML结构等基础用法的示例代码。对于初次使用者来说,这份文档是理解DOM4J功能和用法的...

    dom4j类库+源码

    - **DOM4J入门**:学习DOM4J的基本API,包括创建、解析、输出XML文档,以及节点操作。 - **XPath应用**:掌握XPath查询语言,能够灵活定位XML节点。 - **源码研读**:深入阅读DOM4J源码,理解其实现机制。 - **实战...

    dom4j 英文api和htmldom教程下载

    - **应用**:DOM4J常用于Java应用程序中,尤其是那些需要频繁读写XML数据的项目,如配置文件、数据交换等。 2. **HTML DOM** - **定义**:HTML DOM(Document Object Model)是HTML和XML文档的标准模型,它将HTML...

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

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

    dom4j.doc技术文档 教程

    #### 二、DOM4J 快速入门 ##### 2.1 导入jar包 - **Web Project**: - 将DOM4J的jar包复制到项目的`WebRoot/WEB-INF/lib`目录下。 - **Java Project**: - 在项目中创建一个`lib`目录,将jar包复制到该目录下,...

    dom4j-1.6.1

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

    开源框架《web+dom4j专题》

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

    javaWeb入门jar(BeanUtils C3p0 DBCP DButils dom4j JDBC jstl)

    这些库包括BeanUtils、C3p0、DBCP、DBUtils、JDBC、jstl和dom4j,它们各自在不同的领域提供了强大的支持。 1. **BeanUtils**:Apache Commons BeanUtils库简化了Java对象属性的访问和操作。它提供了一种通过属性名...

    xml读写入门教程

    综上所述,"xml读写入门教程"涵盖了XML的基本概念、DOM4J的使用、XML与Java JDBC的结合以及可能的实战练习。通过学习这些内容,开发者可以有效地在Java项目中处理XML数据,实现数据的读取、写入和交换。

    网站需要的api合集

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

    java调用oracle存储过程入门实例 增删改查

    在这个入门实例中,我们将重点探讨如何通过Java调用Oracle的存储过程来实现这些基本操作,并结合使用DOM4J解析XML配置文件来管理数据库连接。 首先,存储过程是Oracle数据库中预编译的SQL语句集合,它可以封装复杂...

    xml入门项目——通讯录系统

    xml入门小项目——通讯录系统 系统特点: 1、系统主程序入口MainProgram.java ...系统xml文档通过dom4j技术创建和解析。 3、涉及JavaSE中的集合、泛型、接口文件及其实现类的应用等。 4、涉及junit测试方法的使用

    hibernate3入门

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

    xml入门教程/xml入门教程

    - **DOM4j/JDOM**:开源库,提供了更简便的API来操作XML文档,支持DOM和SAX接口。 #### 12. 结论 XML作为一种强大的数据描述和交换格式,在Web服务、内容管理和数据集成等领域有着广泛的应用。理解和掌握XML的基本...

    hibernate入门(doc)

    - **Dom4j**:必需,用于解析XML配置文件。 - **CGLIB**:必需,用于运行时动态生成代理类。 - **Commons Collections** 和 **Commons Logging**:必需,提供常用工具类。 - **ODMG4**:必需,提供了ODMG兼容的...

    hibernate入门教程

    最小集合包括log4j.jar、jta.jar、dom4j.jar、libantlr.jar、cglib-full.jar、asm.jar、asm-attrs.jar、commons-collections.jar、commons-logging.jar、ehcache.jar和hibernate3.jar。这些库文件可以从Hibernate...

    Hibernate入门教程

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

Global site tag (gtag.js) - Google Analytics