【发布时间】:2012-07-04 02:26:16
【问题描述】:
我在使用标准 java 对象创建 XML 时遇到了一个非常严重的问题,我的代码如下:
//Generate DOM
DOMSource source = this.generateDomDocument(params...);
//WRITE XML FILE
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
//Properties
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, STRING_FIELD_DTD);
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//Convert and write to disk
transformer.transform(source, new StreamResult(
new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8")));
问题是,转换器正在转换 
 实体中的回车,而我在生成的 XML 中不应该有这些。这是一个示例,我有一个结果文件,其中包含用几种不同语言编写的翻译(这就是我使用 UTF-8 的原因),当它们在文本中包含 CarriageReturns 时,它们都是相同的:
<content langID="EN">
<desc> Test string
do not copy.</desc>
澄清一下,这是我在 XML 中所期望的:
<content langID="EN">
<desc> Test string
do not copy.</desc>
我在谷歌和这里也查到了这个问题,但似乎没有解决方案或解决方法。
【问题讨论】:
-
我不确定,我是否正确理解了这个问题:输入数据包含 CR,而 XML 输出应该 a) 不包括它们?或者 b) 那里有一个换行符?或 c)...?
-
输入数据包含 CR,并且 XML 输出应该只是有一个换行符,而不是像 这样的东西。然后是 CRLF。我用 Notepad++ 检查了 XML 代码,这就是我发现的。
标签: java xml utf-8 html-entities