Когда я пытаюсь преобразовать свой документ с помощью javax.xml.transform.Transformer, API вставляет некоторые пробелы между тегами внутри CDATASection.
Не знаю почему, я уже использую выходное свойство INDENT как "нет".
Я хочу этот:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<infoDoc>
<xml1><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<el1>
<Header>
<Success>false</Success>
</Header>
<Detail>
<Key>
<Number>4721</Number>
</Key>
</Detail>
</el1>]]></xml1>
</infoDoc>
</root>
Или это:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<infoDoc>
<xml1><![CDATA[<?xml version="1.0" encoding="UTF-8"?><el1><Header><Success>false</Success></Header><Detail><Key><Number>4721</Number></Key></Detail></el1>]]></xml1>
</infoDoc>
</root>
Но я получаю это:
<?xml version="1.0" encoding="UTF-8"?><root><infoDoc><xml1><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<el1>
<Header>
<Success>false</Success>
</Header>
<Detail>
<Key>
<Number>4721</Number>
</Key>
</Detail>
</el1>]]></xml1></infoDoc></root>
Есть ли другое свойство, которое делает это?
Или другой API, который может сделать это правильно?
EDIT: я использую следующее:
...
final Element xml1 = doc.createElement("xml1");
final CDATASection xml1Content = doc.createCDATASection(new String(bytes, Charset.forName(encoding)));
xml1.appendChild(xml1Content);
infoDoc.appendChild(xml1);
...
...
final DOMSource source = new DOMSource(document);
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
transformer.setOutputProperty(OutputKeys.INDENT, "no");
transformer.transform(source, result);
...