我在使用标准 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>
我在谷歌和这里也查到了这个问题,但似乎没有解决方案或解决方法。