Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
XmlDocument输出XML文件出现cast exception的解决

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

最近从网上看到很多介绍XML的文章,输出XML文件时候,示例代码为:

...

//把XML文档输出到指定的文件
    FileOutputStream outStream = new FileOutputStream(outFile);
    OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
 ( ( org.apache.crimson.tree.XmlDocument) doc).write(outWriter, "GB2312");
    outWriter.close();
    outStream.close();

...

 

很遗憾,这段代码是通过不了的...会出现Class Cast Exception错误!

而作者看来并没有意识到.

 

经过我的研究,提出了解决的办法.采用Transformer来输出XML文件。完整代码为

  public static void callWriteXmlFile(Document doc, Writer w,
                                      String encoding) {
    try {
      // Prepare the DOM document for writing
      Source source = new DOMSource(doc);

      // Prepare the output file
      Result result = new StreamResult(w);

      // Write the DOM document to the file
      Transformer xformer = TransformerFactory.newInstance()
          .newTransformer();
      xformer.setOutputProperty(OutputKeys.ENCODING, encoding);
      xformer.transform(source, result);

    }
    catch (TransformerConfigurationException e) {
      e.printStackTrace();
    }
    catch (TransformerException e) {
      e.printStackTrace();
    }
  }

经过我在winxp,jdk1.4环境下编译通过.要包含的包为:

import javax.xml.parsers.*; //XML解析器接口
import org.w3c.dom.*; //XML的DOM实现

import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

对应的,出错的代码应该改正为:

//把XML文档输出到指定的文件
    FileOutputStream outStream = new FileOutputStream(outFile);
    OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
    //出现错误class cast exception
//    ( ( org.apache.crimson.tree.XmlDocument) doc).write(outWriter, "GB2312");
    //换另外的输出xml方法
    callWriteXmlFile(doc, outWriter, "GB2312");
    outWriter.close();
    outStream.close();

所以,




相关文章

相关软件