Java Transformer Как сохранить структуру xml внутри CDATA

Когда я пытаюсь преобразовать свой документ с помощью 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);
...

person DTodt    schedule 29.04.2016    source источник
comment
Может просто опечатка? Это отступ, а не идент.   -  person Hok    schedule 29.04.2016
comment
Я использую OutputKeys.INDENT, просто неправильно набрал в сообщении.   -  person DTodt    schedule 29.04.2016
comment
Вы уверены, что проблема не возникает до преобразования? в вашем выходном документе нет отступа для самого XML-документа (за пределами раздела cdata), что, по-видимому, означает, что проблема может возникать в другом месте. Вы проверили, что данные не имеют отступа, прежде чем вызывать преобразование?   -  person jtahlborn    schedule 29.04.2016
comment
Я уверен, что это преобразователь, который включает пробелы в содержимое cdata. Но не уверен, почему.   -  person DTodt    schedule 29.04.2016
comment
Раздел CDATA должен содержать исходный текст дословно, т.е. следует ожидать либо первого результата, либо второго. Если в исходном тексте были разрывы строк, кажется, что ваше преобразование удваивает только разрывы строк и ничего больше. Может быть, исходный текст имеет разрывы строк, которые являются «неправильным» стилем для вашей системы, например. CRLF в UNIX?   -  person Hok    schedule 02.05.2016
comment
Возможно, я работаю на окнах. Метод Java Transformer разрывает строку Unix?   -  person DTodt    schedule 02.05.2016