例如,我想使用Marshaller.Listener在第一个元素内插入XML注释。
将其编组到XMLStreamWriter时,效果很好。
但是,如果我编组到一个输出流(出于各种原因,我宁愿这样做),则注释文本将写入根元素上名称空间声明的中间!
在Sun / Oracle和MOXy(2.5.2)实施中都会发生这种情况。
在Sun / Oracle实现中,发生这种情况的原因是Sun / Oracle将内容写入名为octetBuffer的变量,并且仅将octetBuffer定期复制到输出流。参见UTF8XmlOutput。
在MOXy(2.5.2)中,似乎OutputStreamRecord以类似的方式使用byte []缓冲区。
我没有注意到任何文档警告我不要触摸侦听器的输出流,但是很明显,除非首先清除内部缓冲区,否则这样做是有问题的。
有任何变通办法吗?