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

dom4j建立,修改XML文档,并解决格式化输出和中文

    博客分类:
  • java
阅读更多
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格式化XML

    【标题】"DOM4J格式化XML"是一个关于XML处理的专题,主要聚焦于使用DOM4J库对XML文档进行格式化的技术。DOM4J是一个非常流行的Java XML API,它提供了丰富的功能,包括读取、写入、修改以及操作XML文档。在XML处理中...

    Dom 4j 格式化xml补充

    ### Dom 4j 格式化 XML 输出详解 #### 概述 Dom 4j 是一个用于处理 XML 文件的强大 Java 库。它提供了一系列简单易用的 API,可以帮助开发者高效地解析、创建和修改 XML 文档。其中,格式化 XML 输出是 Dom 4j ...

    dom4j解析xml文件的压缩包

    8. **转换与格式化**:DOM4J可以将XML Document对象转换为String或OutputStream,同时提供XML格式化的功能,使得输出的XML更易于阅读。 9. **JAXB集成**:DOM4J可以与Java的默认XML绑定框架JAXB进行集成,方便地将...

    dom4j-1.6.1说明文档,chm格式

    1. **元素(Element)**:DOM4J中的元素代表XML文档中的一个节点,它可以包含其他元素、文本和属性。通过`Element`类,我们可以创建、修改和遍历元素。 2. **属性(Attribute)**:元素可以有零个或多个属性,DOM4J...

    dom4j包和文档

    2. **XML文档生成**:DOM4J可以用于生成XML报告、日志或其他需要以XML格式输出的信息。 3. **Web服务**:在处理SOAP消息或RESTful服务的响应时,DOM4J能够帮助解析和构建XML响应。 4. **数据交换**:在分布式系统...

    dom4j帮助文档和架包

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高性能的方式来解析、创建、操作和理解XML数据。这个“dom4j帮助文档和架包”包含了关于DOM4J的所有关键信息,包括API参考、教程和示例,帮助开发者...

    dom4j-1.6.1架包,读取xml

    5. 建立XML文档:DOM4J提供了简单的方法来创建新的XML文档或修改现有文档。例如,可以使用`DocumentFactory`创建新的`Document`,然后通过`Element`对象构建XML结构。 6. 功能丰富的API:DOM4J的API设计得非常友好...

    dom4j帮助文档

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的读取、创建、修改和分析变得简单易行。在Java世界中,XML作为一种数据交换格式,广泛应用于配置文件、数据传输和文档存储等领域...

    dom4j API 用于解析XML的java库

    5. **XML文档构建**:DOM4J提供了便捷的方法来构建XML文档,如`DocumentHelper.createDocument()`和`Element.addElement()`,使得动态创建XML文档变得容易。 6. **读写XML文件**:DOM4J提供了一系列的`Writer`和`...

    dom4j api文档

    DOM4J提供`XMLWriter`和`OutputFormat`类,用于将XML文档写入输出流,支持格式化输出,包括缩进、换行等。此外,还可以通过`DOMWriter`将DOM4J对象转换为标准DOM对象,或者使用`DOMSource`和`StreamResult`与Java的`...

    dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改变得更加简单。在这个场景中,我们关注的是如何使用DOM4J以String的形式读取XML内容,然后将String的值赋给XML...

    java中dom4j读写XML

    在Java中,DOM4J提供了一种灵活的方式来操作XML文档,包括解析、遍历、修改节点以及序列化回XML字符串。 **DOM4J的基本概念:** 1. **Element(元素)**:XML文档中的每一个标签都是一个Element,它包含属性、文本...

    dom4j dom4j1.6 dom4j最新版

    5. **转换和序列化**:DOM4J可以将XML文档转换为其他格式,如HTML或者DOM,也可以将XML对象序列化回字符串或文件。 6. **文档结构**:DOM4J的Document、Element、Attribute、Namespace等类提供了清晰的文档结构表示...

    Dom4j解析XML及中文问题

    而Dom4j是一个流行的Java库,用于处理XML文档,提供了丰富的API来进行XML的读取、写入、修改等操作。然而,当XML文档中包含中文字符时,可能会出现乱码问题。本文将深入探讨如何使用Dom4j解析XML以及解决中文乱码的...

    DOM4J解析XML

    总的来说,DOM4J是Java开发中处理XML的强大工具,无论是解析、构建还是修改XML文档,它都能提供高效和便捷的解决方案。通过学习和掌握DOM4J,开发者可以更好地利用XML进行数据交换和处理,提高项目开发的效率。结合...

    dom4j-xml.rar_DOM4J

    3. **修改XML文档**:通过DOM4J,可以方便地对XML文档进行修改,比如插入、删除、替换节点,或者修改属性值。 4. **查询XML文档**:DOM4J支持XPath表达式,这是一种强大的查询XML文档的语言,能够快速定位到文档中...

    dom4j.jar,java xml

    DOM4J是一个强大的Java库,专门用于处理XML文档。它是一个灵活且高性能的XML解析器,同时提供了丰富的API,使得在Java应用程序中读取、写入、修改和操作XML文件变得简单。DOM4J这个名字来源于Document Object Model ...

    利用dom4j--读取xml文件

    首先,创建`OutputFormat`对象以定义格式化选项,如缩进和换行。然后,使用`XMLWriter.write(document, outputStream)`将XML写入输出流,例如文件输出流。 ```java OutputFormat format = OutputFormat....

    dom4j-2.1.3.zip

    1. **灵活的文档构建**:DOM4J提供了多种方式来创建和修改XML文档,如通过元素、属性、文本节点等对象直接操作,或者使用XPath表达式定位。 2. **强大的查询能力**:DOM4J支持XPath,可以方便地通过路径表达式查找...

Global site tag (gtag.js) - Google Analytics