XmlDocument输出XML文件出现cast exception的解决

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

最近从网上看到很多介绍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();

所以,

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航