用Dom4j解析XML及中文问题(三)

来源:互联网 发布:杨支柱知乎 编辑:程序博客网 时间:2024/05/16 18:12

5. 格式化输出和指定编码

 

默认的输出方式为紧凑方式,默认编码为UTF-8,但对于我们的应用而言,一般都要用到中文,并且希望显示时按自动缩进的方式的显示,这就需用到OutputFormat类。

 

 

   

    /**

     * 格式化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 writer = null;

           /** 格式化输出,类型IE浏览一样 */

           OutputFormat format = OutputFormat.createPrettyPrint();

           /** 指定XML编码 */

           format.setEncoding("GBK");

           writer= new XMLWriter(new FileWriter(new File(filename)),format);

           writer.write(document);

           writer.close();     

           /** 执行成功,需返回1 */

           returnValue = 1;    

       }catch(Exception ex){

           ex.printStackTrace();

       }

       return returnValue;

    }

 

说明:

 

OutputFormat format = OutputFormat.createPrettyPrint();

这句指定了格式化的方式为缩进式,则非紧凑式。

 

format.setEncoding("GBK");

指定编码为GBK

 

XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format);

这与前面两个方法相比,多加了一个OutputFormat对象,用于指定显示和编码方式。

 

6. 完整的类代码

 

前面提出的方法都是零散的,下面给出完整类代码。

 

Dom4jDemo.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() {

    }

 

    public int createXMLFile(String filename){…}

    public int ModiXMLFile(String filename,String newfilename){…}

    public int formatXMLFile(String filename){…}

 

    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"));

    }

}

 

说明:

main()方法中依次调用三个方法,第一个方法用于生成holen.xml,第二个方法用于修改holen.xml,并且修改后的内容另存为holen2.xml,第三个方法将holen2.xml格式化缩进式输出,并指定编码方式为GBK

 
原创粉丝点击