我正在使用 Apache Xerces 2.11.0 和 Apache Xalan 2.7.1,但在序列化 XML 时出现了额外回车字符的问题。
以下是我伪造的代码:
现在
如果我使用
额外的字符似乎是在序列化过程中引入的,DOM树似乎是正确的。(根据
为什么会发生这种情况?我该怎么办才能解决这个问题?
以下是我伪造的代码:
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()
)。为什么会发生这种情况?我该怎么办才能解决这个问题?