我在PAYLOAD模式下使用Camel CXF时遇到问题。我正在发送一个SOAP请求,其主体没有名称空间前缀。
<soap:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.mycompnay.com/test/" xmlns:ns1="http://www.mycompany.com/test/1/">
<soap:Body>
<request>
<ns1:identifier>TEST</ns1:identifier>
</request>
</soap:Body>
</soap:Envelope>
我正在尝试将cxf body元素作为cxfPayload.getBody().get(0)
,它为我提供了一个元素列表。
现在每当我使用没有前缀的命名空间时,该元素都有一个属性“xmlns:xmlns”。我注意到这发生在两个地方。
在这两个地方,“xmlns:”只是以nsMap.get(key)为前缀,而不检查值是否为xmlns。
这会在架构验证期间导致问题,并且如果将相同的CXFPayload发送到另一个服务(代理服务模式),则会导致Out拦截器失败,因为“xmlns:xmlns”不是有效的命名空间属性。
感谢帮助,因为我不确定我是否在这里遗漏了一些东西。