我正在寻找如何删除 <soapenv:Header>
的解决方案使用基于 XML 的路由 (Apache Camel Blueprint XML) 的 SOAP 请求的一部分。
所以这个:
<soapenv:Envelope xmlns:net="..." xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
...
</soapenv:Header>
<soapenv:Body>
...
</soapenv:Body>
</soapenv:Envelope>
应该变成这样:
<soapenv:Envelope xmlns:net="..." xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
...
</soapenv:Body>
</soapenv:Envelope>
我想我找到了基于java的解决方案,也找到了基于xslt的解决方案,但我发现它们不太适合我的项目,我仍然希望有一些简单的方法可以直接在XML路由中执行此操作,而无需创建java处理类或添加 XSLT 模板。
我正在尝试<removeHeaders pattern="_something_"/>
但要么我无法找出正确的“东西”,要么这个命令仅适用于有效负载部分上方的 header ...
最佳答案
在 Blueprint 中,您可以使用 XPATH 获取 XML 的正文。像这样的事情:
<setProperty propertyName="MessageBody">
<xpath>//*[local-name()='Body']</xpath>
</setProperty>
然后您可以使用信封标签重建您的消息。
<setBody>
<simple><![CDATA[<Envelope>${property.MessageBody}</Envelope>]]></simple>
</setBody>
只有当您的信封标签是常量时,这才有效。
关于java - 删除 <soapenv :Header> from payload in XML route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37968693/