You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apache Camel中配置Woodstox属性?

在Apache Camel 2.25.4中配置Woodstox特定属性

要给Camel的xtokenize组件配置Woodstox专属属性(比如WstxInputProperties.P_RETURN_NULL_FOR_DEFAULT_NAMESPACE),需要通过自定义XMLInputFactory实现,具体步骤如下:

1. 创建配置好Woodstox属性的XMLInputFactory实例

直接初始化Woodstox输入属性并绑定到它的XMLInputFactory实现类:

import com.ctc.wstx.api.WstxInputProperties;
import com.ctc.wstx.stax.WstxInputFactory;
import javax.xml.stream.XMLInputFactory;

// 初始化Woodstox输入配置
WstxInputProperties wstxProps = new WstxInputProperties();
// 设置目标属性,这里以P_RETURN_NULL_FOR_DEFAULT_NAMESPACE为例
wstxProps.setProperty(WstxInputProperties.P_RETURN_NULL_FOR_DEFAULT_NAMESPACE, true);

// 创建配置完成的Woodstox XMLInputFactory
XMLInputFactory customXmlInputFactory = new WstxInputFactory();
((WstxInputFactory) customXmlInputFactory).setProperties(wstxProps);

2. 将自定义工厂注册到Camel上下文

把配置好的工厂实例绑定到Camel注册表,方便路由中引用:

// 在Camel上下文初始化阶段执行此代码
camelContext.getRegistry().bind("customWstxInputFactory", customXmlInputFactory);

3. 在xtokenize中指定使用自定义工厂

修改路由中的xtokenize调用,通过xmlInputFactory()方法指定注册的工厂:

from("direct:xxx")
        .routeId("xxx")
        .split(body().xtokenize("//xxx:xxx", 'i', ns).xmlInputFactory("customWstxInputFactory"), myAggregationStrategy)
            .process(myProcessor)
        .end();

全局配置方案(可选)

如果希望所有Camel组件都使用这个配置好的Woodstox工厂,可直接设置Camel上下文的全局属性:

camelContext.getProperties().put("CamelXmlInputFactory", customXmlInputFactory);

无需在每个xtokenize中单独指定,全局生效。


内容的提问来源于stack exchange,提问作者vincent_tang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:32:20