【发布时间】:2013-08-07 16:21:25
【问题描述】:
我应该如何处理要编组为 XML 的字符串中的换行符?
我在使用 Java 和 JAXB 处理将字符串放入包含换行符的 XML 文件时遇到了困难。正在从数据库中提取数据,其中包含实际的换行符。
Foo <LF>
bar
或者一个额外的例子:
Foo\r\n\r\nBar
产量:
Foo

Bar
如果我只是将这些数据编组为 XML,我会在输出中得到文字换行符。这显然违反了字符应编码为&#xD; 的XML 标准。即在 XML 文件输出中我应该看到:
Foo &amp;#xD;bar
但如果我尝试手动执行此操作,我的 & 符号最终会被编码!
Foo &amp;#xD;bar
这非常具有讽刺意味,因为显然应该首先对换行符进行编码而没有进行编码的过程正在挫败我手动对其进行编码的尝试。
【问题讨论】:
-
您需要告诉我们您是如何编写 XML 文件的,您显然正在使用某种机制来翻译特殊字符,而插入特殊字符的方式将取决于该机制。这是一个重要的细节,否则我只会告诉你 fileWriter.write(" ") 工作得很好。
-
好的,代码正在使用
javax.xml.bind.Marshaller编写XML。我创建了一个模式,然后使用xjc.exe对其进行编译。希望这是足够的信息? -
文字新行在 element 内容中很好,并且在属性中,编组器应在必要时自动将它们编码为
&#10;,因此它应该按原样工作。 -
Interesting @IanRoberts...我继承了这个软件,他们已经实现了这个程序来将文字 LF 字符转换为字符串
#xA...请注意,它的时间和地点非常不一致确实如此,但现在我正在与外部开发人员合作,以确保我们的两个工具都保持数据完整性。我应该在元素内容中保留文字换行符吗?我什至看到其他人建议用\n替换。也许您可以参考我们的标准,表明可以在元素内容中使用文字换行符。 :-)
标签: java xml jaxb marshalling