58.9. 控制命名空间前缀映射
使用 JAXB 或 SOAP 总结时,JAXB 实施将自动分配命名空间前缀,如 ns2、ns3、ns4 等。要控制此映射,Camel 允许您引用包含所需映射的映射。
请注意,这需要在 classpath 上具有 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>
要在 JAXB 或 SOAP 中使用它,请参考这个映射,使用 namespacePrefixRef
属性,如下所示。然后,Camel 会在 Registry 中查找 java.util.Map
,其 ID 为 "myMap",这是我们上方定义的。
<marshal> <soapjaxb version="1.2" contextPath="com.mycompany.foo" namespacePrefixRef="myMap"/> </marshal>