当前位置: 首页 > 知识库问答 >
问题:

JAXB-为什么我只能封送到流/文件?

葛昱
2023-03-14

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

项目A(将文件存储到文件夹中。应采用字节[]和名称,并应将数据写入文件中。不多,只是一个愚蠢的文件编写器应用程序)

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

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

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

共有2个答案

惠志
2023-03-14

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

因此,为了回答您的问题,为什么marshal()需要一个输出流(OutputStream)或写入器(Writer),仅仅是因为这实际上已经足够了

王伯寅
2023-03-14

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

 类似资料:
  • 我正在尝试封送和取消封送映射到值对/从值对。我可以成功封送该对象,但是,我不能从XML中取消封送它。反封送结果是映射中存在的关键字,但其值为空。 下面是我要封送和取消封送的模型: 而且我还发现了一个关于这个问题的类似问题“JAXB:如何将映射编入 value ”,然而,它并没有解决解编组问题?

  • 我正在尝试使用JAXB进行封送处理。 我的输出是这样的: ...但我需要这样的输出: 如果取消对代码的注释,则会得到。没有它,我可以编译,但我不能得到所需的精确输出。 我的豆子长这样: 适配器类

  • 我正在构建一系列链接类,我希望这些类的实例能够整理成XML,这样我就可以将它们保存到一个文件中,以后再读进去。 目前我使用以下代码作为测试用例: XML输出为: 元素为空有什么原因吗?我希望它包含日期的字符串表示(即)。为了做到这一点,我需要编写一些我自己的代码吗? 的输出是:

  • 问题内容: 我正在尝试下载一个zip文件,但出现了 Stream Closed Exception 。当我使用Swing GUI时,会出现此错误,但是如果我使用控制台,则不会有问题。为什么会出现此异常?我该如何解决? 这是我的代码: 这是堆栈跟踪 问题答案: 此异常通常表示连接突然关闭。我将查看服务器上的日志,看看是否有错误。

  • 所以我创建了一个Docker中心映像,如下所示,工作正常 几周后,我需要为新的软件版本重建映像,所以我做到了 但是最后的推送命令失败了 运行docker images可以提供:

  • 下面是我为nodemailer做的函数- 在这里,我已经在.env文件中给出了电子邮件id和密码,我正在下面使用这个功能。客户将从我的id获得一封邮件到他的电子邮件id中。 密码是正确的。但我遇到了这个错误- 错误:无效的登录名:534-5.7.9需要应用程序特定的密码。了解更多信息,请访问534 5.7.9 https://support.google.com/mail/?p=invalidse