【问题标题】:JAXB - why can i only marshal to a stream/file?JAXB - 为什么我只能编组到流/文件?
【发布时间】:2015-06-08 14:15:46
【问题描述】:

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

项目A(应将文件存储到文件夹中。应获取字节[]和名称,并将数据写入文件。仅此而已,只是一个愚蠢的文件写入器应用程序)

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

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

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

【问题讨论】:

  • 我很好奇你期待什么样的对象?如果你想要一个字符串,你可以使用StringWriter

标签: java xml jaxb


【解决方案1】:

传入ByteArrayOutputStream。然后您可以使用toByteArray() 将其转换为byte[]

【讨论】:

    【解决方案2】:

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

    所以要回答你的问题,marshal() 要求OutputStreamWriter 的原因是因为这实际上绰绰有余。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-13
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      相关资源
      最近更新 更多