Я использую 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()
)
Почему это происходит? Что я могу сделать, чтобы это исправить?