马歇尔空字段JaxbDataFormat

时间:2018-04-20 16:10:51

标签: xml jaxb apache-camel marshalling

我目前正在使用jaxbDataFormat将填充的xjc类封送到xml文件/字符串。但是,当我编组时,只有填充的字段才会打印。例如,假设version015v003有2个String字段,field1和field2。我设置了field1 =""但是不要设置field2。我仍然希望生成的xml同时具有field1和field2。如下所示。有关如何实现这一目标的任何建议吗?

<field1>something</field1>
<field2></field2>

JaxbDataFormat jaxbDataFormat =  new JaxbDataFormat("com.ups.brokerage.model.boss.version015v003");

from("direct:convertToEntryPacket")
        .routeId("BasXmlTranslation.mapToEntryPacket")
        .setExchangePattern(ExchangePattern.InOut)
        .bean("logging", "info(*, 'About to convert to entry packet')")
        .bean(entryPacketToBasMapper, "mapEntryPacketToBas(*)")
        .marshal(jaxbDataFormat)
        .bean("logging", "info(*, 'TRANSFORM: entry packet made... Message Body: ${body}')")
        .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(200))
        .convertBodyTo(String.class);

1 个答案:

答案 0 :(得分:0)

解决方法:将空字段转换为空字符串(null - &gt;“”)

变通方法会显示该字段,但可能会显示为<field2/>

对于纯jaxb方式,您可以查看default valuenull field的其他SO答案。