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

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

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值