標準の 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>
Google とここでも問題を調べましたが、解決策や回避策はないようです。