我发现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>
2条答案
按热度按时间mu0hgdu01#
您可以在jacksonxml元素上设置一个自定义xmlMapper,该属性称为“xmlMapper”,然后可以引用应声明为Bean的自定义XmlMapper,但这一点很重要,必须在Bean名称前包含一个**#**,否则将不会查找对象Map器,对象Map器将被设置为空,并将创建一个默认Map器。
第一个
vptzau2j2#
我向Camel -CAMEL-18345提出了这个问题,它确实是一个缺少的特性。他们解决了这个问题,并且在版本3.18.1中已经有了更改,所以属性EMPTY_ELEMENT_AS_NULL将以与通常的方式(FAIL_ON_UNKNOWN_PROPERTIES等)相同的方式可用。