Почему Apache Xerces / Xalan добавляет дополнительные символы возврата каретки к моему сериализованному выводу?

Я использую Apache Xerces 2.11.0 и Apache Xalan 2.7.1, и у меня проблемы с дополнительными символами возврата каретки в сериализованном XML.

У меня есть этот (псевдокод):

String myString = ...;
Document doc = ...;

Element item = doc.createElement("item");
item.appendChild(doc.createCDATASection(myString));

Transformer transformer = ...;
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Result result = new StreamResult(stream);
transformer.transform(new DOMSource(document), result);

Теперь myString содержит разрывы строк ( \ r \ n ) (на самом деле это данные в кодировке base64), но когда я смотрю на сериализованный вывод, есть дополнительные \ r символов.

Вход:

Line 1 \r\n
Line 2 \r\n
Line 3 \r\n

Выход :

Line 1 \r\r\n
Line 2 \r\r\n
Line 3 \r\r\n

Если я использую createTextNode вместо createCDATASection , вывод становится еще интереснее:

Line 1 
\r\n
Line 2 
\r\n
Line 3 
\r\n

дополнительный символ, кажется, вводится во время сериализации, дерево DOM кажется правильным. (Согласно getTextContent () )

Почему это происходит? Что я могу сделать, чтобы исправить это?

7
задан Daniel Rikowski 11 June 2011 в 17:43
поделиться