使用 Marshal 发送 XML 没有空格的 JAXB 对象 (marshalSendAndReceive)

Using Marshal to send a JAXB object with the XML having no whitespaces (marshalSendAndReceive)

提问人:user20066926 提问时间:10/17/2023 更新时间:10/17/2023 访问量:27

问:

我正在尝试使用 marshalSendAndReceive 将我的 JaxB 对象转换为 XML 并向端点发送请求。但是,问题是我有相当大的XML,在某些情况下会导致失败。

为了解决这个问题,我想摆脱“漂亮的”XML格式,我知道如果你通过将第二个参数设置为false来控制编组器,你可以做到这一点。

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);

这将导致 XML 看起来像

<dog>0.0</dog>
<cat>0.0</cat>

对此

<dog>0.0</dog><cat>0.0</cat>

我的问题是我需要使用 marshalSendAndReceive 函数调用,它将在库中自行创建封送器,因此我无法修改属性。有没有人有什么办法解决这个问题?

Java XML JAXB 解组

评论

0赞 LMC 10/17/2023
可以创建将封送处理器/取消封送处理器作为参数传递的 WebServiceTemplate
0赞 user20066926 10/17/2023
对不起,您能澄清一下吗,它有什么帮助?
0赞 LMC 10/17/2023
而不是我假设您正在以某种方式使用,请使用传递 Marshaler/Unmarshaler 的 2 args 构造函数; .这样你就可以通过你的自定义编组器了WebServiceTemplate webServiceTemplate = new WebServiceTemplate();WebServiceTemplate webServiceTemplate = new WebServiceTemplate(mars, unmars)mars.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
0赞 user20066926 10/17/2023
我明白了,你知道“marshalSendAndReceive”中使用的马歇尔是否已经用 false 格式化了吗?我尝试检查,但不确定默认值是什么。如果是这样的话,我们甚至不需要做出改变
0赞 LMC 10/17/2023
真的不知道,但你可以浏览源代码并找出来

答: 暂无答案