我正在使用 JAX-RS 创建一些服务,并且对 JAXB(实际上是一般的 XML)相对较新,所以请不要假设我知道我可能应该知道的先决条件!问题如下:我想在 XML 中发送和接收“部分”对象。也就是说,假设一个对象(显然是 Java 形式)具有:
类事物 { int x,字符串 y,客户 z }
我希望能够发送一个 XML 输出,其中包含(动态选择,因此我不能使用 XmlTransient)仅 x,或仅 z,或 x 和 y,但不包含 z,或任何其他适合我的客户的组合。显然,重点是有时客户端不需要所有东西,所以我可以节省一些带宽(特别是对于深度复杂对象的列表,这个例子显然没有说明!)。
此外,对于输入,同样的带宽参数适用;我希望能够让客户端只发送应该在 PUT 操作中更新的特定字段,而忽略其余部分,然后让服务器将这些新值“合并”到现有对象上并保留未提到的字段不变。
这似乎在 Jackson JSON 库中得到支持(尽管我仍在研究它),但我在 JAXB 中找不到它。有任何想法吗?
我正在思考的一个想法是,是否可以通过地图以某种方式做到这一点。如果我创建了一个我想要发送的地图(可能是嵌套的地图,用于嵌套的复杂对象),JAXB 可以用一个合理的结构发送它吗?如果它可以在输入上创建这样的地图,我想我可以通过它来进行更新。不完美,但也许?
是的,我知道到处飞来飞去的“文档”可能会不符合模式,缺少字段等等,但我可以接受,前提是基础设施可以正常工作。
哦,我知道我可以使用 SAX、StAX 或 DOM 解析“手动”执行此操作,但我希望有一种更自动化的方法,特别是因为 JAXB 可以毫不费力地处理整个对象。
干杯,托比