在Camel 3 XML DSL中启用EMPTY_ELEMENT_AS_NULL

a14dhokn  于 2022-11-07  发布在  Apache
关注(0)|答案(2)|浏览(153)

我发现hereFromXmlParser.Feature.EMPTY_ELEMENT_AS_NULL的默认行为已经从true(2.9 - 2.11)更改为false(2.12以后),因此从该版本开始,不会自动从空元素强制转换为null。
我使用的是Apache Camel 2.25,该版本默认启用了此功能,但现在,由于此更改,Camel 3.x中禁用了此功能。如何在Camel 3中使用XML DSL启用此功能?我知道使用XMLMapper非常简单:

XmlMapper xmlMapper = new XmlMapper();
xmlMapper.configure(FromXmlParser.Feature.EMPTY_ELEMENT_AS_NULL, true);

但是在Camel XML DSL中,允许的枚举只有来自SerializationFeature、DeserializationFeature和MapperFeature的枚举。

<unmarshal>
   <jacksonxml disableFeatures="FAIL_ON_UNKNOWN_PROPERTIES"
      enableFeatures="ACCEPT_EMPTY_STRING_AS_NULL_OBJECT,ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT"
      unmarshalTypeName="com.my.class.Result" 
      include="NON_NULL" />
</unmarshal>
mu0hgdu0

mu0hgdu01#

您可以在jacksonxml元素上设置一个自定义xmlMapper,该属性称为“xmlMapper”,然后可以引用应声明为Bean的自定义XmlMapper,但这一点很重要,必须在Bean名称前包含一个**#**,否则将不会查找对象Map器,对象Map器将被设置为空,并将创建一个默认Map器。
第一个

vptzau2j

vptzau2j2#

我向Camel -CAMEL-18345提出了这个问题,它确实是一个缺少的特性。他们解决了这个问题,并且在版本3.18.1中已经有了更改,所以属性EMPTY_ELEMENT_AS_NULL将以与通常的方式(FAIL_ON_UNKNOWN_PROPERTIES等)相同的方式可用。

相关问题