Java,XML DocumentBuilder - 在解析时设置编码

Ral*_*h D 5 java xml encoding domdocument xml-parsing

我正在尝试保存一个树(扩展JTree),它保存一个XML文件DOM Object,改变了它的结构.

我创建了一个新的文档对象,遍历树以成功检索内容(包括XML文档的原始编码),现在有一个ByteArrayInputStream具有XML正确编码的树内容(文档).

问题是我解析时ByteArrayInputStream编码被自动更改为UTF-8(在XML文档中).

有没有办法防止这种情况,并使用正确的编码ByteArrayInputStream.

还有一点值得补充的是,我已经使用该
transformer.setOutputProperty(OutputKeys.ENCODING, encoding) 方法来检索正确的编码.

任何帮助,将不胜感激.

Cyr*_* N. 5

这是一个更新的答案,因为 OutputFormat 已被弃用:

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");

StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(document), new StreamResult(writer));
String output = writer.getBuffer().toString().replaceAll("\n|\r", "");
Run Code Online (Sandbox Code Playgroud)

第二部分将 XML 文档作为字符串返回


Ral*_*h D 2

经过大量的尝试和错误,我解决了这个问题。

我正在使用

OutputFormat format = new OutputFormat(document);
Run Code Online (Sandbox Code Playgroud)

但将其更改为

OutputFormat format = new OutputFormat(d, encoding, true);
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题。

encoding我设置的就是指
true是否设置缩进。

自我注意 - 更仔细地阅读 - 几个小时前我已经看过 javadoc - 如果我能更仔细地阅读就好了。