XML解析后写入文件部分代码如下:
/** 将document中的内容写入文件中 */
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//编码,这里document是已经加载的XML文档
DOMSource source = new DOMSource(document);
//PrintWriter这个地方出错
PrintWriterpw = new PrintWriter(new FileOutputStream("your file path"));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
就是PrintWriter这里出的问题。
PrintWriter自身并没有处理编码的职责,它还是应该看成一个装饰器比较好:它就是为了输出更方便而设计的,提供print、println、printf等便利方法。要设置编码的话,可以在它的底层Writer上设置:(这里以OutputStreamWriter为底层Writer)
new PrintWriter(
new OutputStreamWriter(
new FileOutputStream("yourfilepath"),
"UTF-8"));
PrintWriter需要其他Writer、OutputStream或文件才能创建,所以PrintWriter额编码需要设置在上一层的流或文件中。
设置方法可参照具体的流或文件的构造方法。