当我使用此属性封送XML时
marshal.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
marshal.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Run Code Online (Sandbox Code Playgroud)
它会在最顶部产生一个空的换行符
//Generate empty line break here
<XX>
<YY>
<PDF>pdf name</PDF>
<ZIP>zip name</ZIP>
<RECEIVED_DT>received date time</RECEIVED_DT>
</YY>
</XX>
Run Code Online (Sandbox Code Playgroud)
我认为原因是因为marshal.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);删除<?xml version="1.0" encoding="UTF-8" standalone="yes"?>了输出xml在开头的一个换行符.有没有办法来解决这个问题?我使用JAXB自带JDK 6,Moxy会遇到这个问题吗?
正如您所指出的,EclipseLink JAXB (MOXy)没有这个问题,因此您可以使用它(我是 MOXy 的负责人):
选项1
一种选择是使用java.io.FilterWriterorjava.io.FilterOutputStream并自定义它以忽略前导新行。
选项#2
另一种选择是编组到 StAX,并使用支持格式化输出的 StAX 实现。我自己没有尝试过,但下面链接的答案建议使用com.sun.xml.txw2.output.IndentingXMLStreamWriter.
| 归档时间: |
|
| 查看次数: |
12921 次 |
| 最近记录: |