【发布时间】:2011-06-11 16:59:52
【问题描述】:
我使用的是 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())
为什么会这样?我该怎么做才能解决这个问题?
【问题讨论】:
-
Result只是一个输出树。您如何将 Result 序列化为字符串或输出流? -
我遇到了同样的问题。你找到解决这个问题的方法了吗?
-
不,不幸的是我从来没有这样做过。我现在手动删除换行符。
标签: xml xml-serialization xerces xalan