Java,XML DocumentBuilder - 解析时设置编码 [英] Java, XML DocumentBuilder - setting the encoding when parsing
问题描述
我正在保存一个树(扩展 JTree
),它将一个 XML
文档保存到 DOM对象
已经改变了它的结构。
I'm trying to save a tree (extends JTree
) which holds an XML
document to a DOM Object
having changed it's structure.
我已经创建了一个新的文档对象,遍历树来成功检索内容包括 XML
文档的原始编码),现在有一个 ByteArrayInputStream
,它具有树的内容( XML
文档)具有正确的编码。
I have created a new document object, traversed the tree to retrieve the contents successfully (including the original encoding of the XML
document), and now have a ByteArrayInputStream
which has the tree contents (XML
document) with the correct encoding.
问题是当我解析 ByteArrayInputStream
自动将编码更改为 UTF-8
(在 XML
文档中)。
The problem is when I parse the ByteArrayInputStream
the encoding is changed to UTF-8
(in the XML
document) automatically.
有没有办法防止这种情况,并使用 ByteArrayInputStream
中提供的正确编码。
Is there a way to prevent this and use the correct encoding as provided in the ByteArrayInputStream
.
也值得补充的是,我已经使用了
transformer.setOutputProperty(OutputKeys.ENCODING,encoding) code>方法来检索正确的编码。
It's also worth adding that I have already used the
transformer.setOutputProperty(OutputKeys.ENCODING, encoding)
method to retrieve the right encoding.
任何帮助将不胜感激。
推荐答案
自从OutputFormat被弃用以来,这是一个更新的答案:
Here's an updated answer since OutputFormat is deprecated :
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", "");
第二部分将返回XML文档作为字符串
The second part will return the XML Document as String
这篇关于Java,XML DocumentBuilder - 解析时设置编码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!