169.10. 控制命名空间前缀映射
从 Camel 2.11 开始提供
使用 JAXB 或 SOAP 总结时,JAXB 实施将自动分配命名空间前缀,如 ns2、ns3、ns4 等。要控制此映射,Camel 允许您引用包含所需映射的映射。
请注意,这需要在类路径上具有 JAXB-RI 2.1 或更好的(来自 SUN),因为映射功能依赖于 JAXB 的实施,无论其受支持。
例如,在 Spring XML 中,我们可以使用映射定义一个映射。在下面的映射文件中,我们将 SOAP 映射到使用 soap 作为前缀。虽然我们的自定义命名空间 "http://www.mycompany.com/foo/2" 没有使用任何前缀。
<util:map id="myMap">
<entry key="http://www.w3.org/2003/05/soap-envelope" value="soap"/>
<!-- we dont want any prefix for our namespace -->
<entry key="http://www.mycompany.com/foo/2" value=""/>
</util:map>
<util:map id="myMap">
<entry key="http://www.w3.org/2003/05/soap-envelope" value="soap"/>
<!-- we dont want any prefix for our namespace -->
<entry key="http://www.mycompany.com/foo/2" value=""/>
</util:map>
要在 JAXB 或 SOAP 中使用它,您可以使用 namespacePrefixRef 属性引用此映射,如下所示。然后,Camel 将在 Registry 中查找 ID 为 "myMap" 的 java.util.Map,这是我们定义的内容。
<marshal>
<soapjaxb version="1.2" contextPath="com.mycompany.foo" namespacePrefixRef="myMap"/>
</marshal>
<marshal>
<soapjaxb version="1.2" contextPath="com.mycompany.foo" namespacePrefixRef="myMap"/>
</marshal>