我目前正在开展一个项目,具有以下架构:
项目A(将文件存储到文件夹中。应该使用byte []和name,并将数据写入文件。不仅仅是一个愚蠢的文件编写器应用程序)
项目B(应从数据库读取数据,生成数据的xml文件并将其作为byte []发送到项目A,后者将其写入文件系统中)
现在我的问题:在项目B中,我想生成xml文件作为对象,但Jaxb-Marshaller的API仅提供marshal()方法,该方法将Writer / File / OutputStream作为参数。 。我不想在项目B中给出文件或OutputStream-这应该是项目A的任务......
那么为什么没有方法将生成的XML作为Object或byte []或其他方式返回?
答案 0 :(得分:3)
传递ByteArrayOutputStream。然后,您可以使用toByteArray()
将其转换为byte[]
答案 1 :(得分:2)
请求流的marshal()
方法的目的正是为了让您有机会决定输出的方式。您可以将输出流式传输到您喜欢的任何内容。您可以将其流式传输到内存(例如,使用其他人建议的ByteArrayOutputStream
或StringWriter
),通过网络套接字传输到文件系统,甚至让API中的客户端决定如何处理让它通过自己的Stream。
因此,为了回答您的问题,marshal()
仅要求OutputStream
或Writer
的原因是因为实际上绰绰有余。 :)