JAXB - 为什么我只能编组流/文件?

时间:2015-06-08 14:15:46

标签: java xml jaxb

我目前正在开展一个项目,具有以下架构:

项目A(将文件存储到文件夹中。应该使用byte []和name,并将数据写入文件。不仅仅是一个愚蠢的文件编写器应用程序)

项目B(应从数据库读取数据,生成数据的xml文件并将其作为byte []发送到项目A,后者将其写入文件系统中)

现在我的问题:在项目B中,我想生成xml文件作为对象,但Jaxb-Marshaller的API仅提供marshal()方法,该方法将Writer / File / OutputStream作为参数。 。我不想在项目B中给出文件或OutputStream-这应该是项目A的任务......

那么为什么没有方法将生成的XML作为Object或byte []或其他方式返回?

2 个答案:

答案 0 :(得分:3)

传递ByteArrayOutputStream。然后,您可以使用toByteArray()

将其转换为byte[]

答案 1 :(得分:2)

请求流的marshal()方法的目的正是为了让您有机会决定输出的方式。您可以将输出流式传输到您喜欢的任何内容。您可以将其流式传输到内存(例如,使用其他人建议的ByteArrayOutputStreamStringWriter),通过网络套接字传输到文件系统,甚至让API中的客户端决定如何处理让它通过自己的Stream。

因此,为了回答您的问题,marshal()仅要求OutputStreamWriter的原因是因为实际上绰绰有余。 :)