OutputFormat format = OutputFormat.createPrettyPrint(); // 设置XML文档输出格式
format.setEncoding("UTF-8"); // 设置XML文档的编码类型
writer = new XMLWriter(new FileWriter(new File(filename)));
writer.write(document);
writer.flush();
如上代码生成的含中文的xml文件,在进行解析时会发生编码错误,原因是Writer对象不提供编码处理的功能,format.setEncoding("UTF-8")设置了使用UTF-8编码存储xml文件,但是在使用Writer对象时,不提供编码处理功能,生成xml文件时使用了默认的系统编码,在中文版系统中和JDK中,而默认的系统编码一般为GBK,GB2312等中文字符编码,所以生成的xml的编码和声明编码类型不一致,解析时按照声明编码进行解析,就发生了错误.解决此问题的最简单方法就是采用字节流,而不采用字符流.
OutputFormat format = OutputFormat.createPrettyPrint(); // 设置XML文档输出格式
format.setEncoding("UTF-8"); // 设置XML文档的编码类型
writer = new XMLWriter(new FileOutputStream(new File(filename))); //将字符流改为字节流即可
writer.write(document);
writer.flush();