gpt4 book ai didi

xml - WSO2 ESB 有效负载工厂中的 CDATA

转载 作者:数据小太阳 更新时间:2023-10-29 02:02:13 25 4
gpt4 key购买 nike

我正在尝试在 ESB 中编写一个序列,并通过使用负载工厂填充我的负载数据,如下面的示例所述。

  <payloadFactory>
<format>
<p:echoInt xmlns:p="http://echo.services.core.carbon.wso2.org">
<in xmlns="">$1</in>
</p:echoInt>
</format>
<args>
<arg xmlns:ns="http://org.apache.synapse/xsd" expression="an-xml-formatted-string"/>
</args>
</payloadFactory>
<send>
<endpoint>
<address uri="http://noon101:8280/services/echo" format="soap11"/>
</endpoint>
</send>

因为当我将此有效负载发送到服务时我的字符串被格式化为 xml,服务尝试解析我的 xml 参数并且(我不明白确切原因是什么)我的 web 服务方法没有被调用。在这个link它说如果我使用 cdata 解析器将不会解析我的 xml 格式的字符串并且不会有问题。

但问题是 Payload Factory 中介不接受其内容中的 Cdata。当我如下所示编写 Payload Factory 的配置时,它从中删除了 CDATA 关键字,问题就出现了。

  <payloadFactory>
<format>
<p:echoInt xmlns:p="http://echo.services.core.carbon.wso2.org">
<in xmlns=""> <![CDATA[ $1 ]]> </in>
</p:echoInt>
</format>
<args>
<arg xmlns:ns="http://org.apache.synapse/xsd" expression="an-xml-formatted-string"/>
</args>
</payloadFactory>

这个问题的解决方案是什么?任何其他设置有效负载或任何解决方法的调解员将不胜感激。

最佳答案

您可以在 payload factory mediator 中使用 CDATA。您唯一需要做的是,您需要将格式存储在注册表中并从那里使用它。 Registry Resource

以下是示例。在此示例中,我使用我之前调用的响应作为我使用负载工厂中介准备的消息的输入。

     <property xmlns:ns="http://org.apache.synapse/xsd"
name="ALLRESULTS"
expression="$body/child::*[fn:position()=1]"
scope="default"
type="STRING"/>

<payloadFactory media-type="xml">
<format key="conf:/repository/esb/myPF"/>
<args>
<arg evaluator="xml" expression="$ctx:ALLRESULTS"/>
<arg value="1"/>
</args>
</payloadFactory>

注册表资源内容如下。

                       <ns:testMethod xmlns:ns="http://example.com">
<xs:xmlBody xmlns:xs="http://example.com"><![CDATA[$1]]></xs:xmlBody>
<xs:sessionId xmlns:xs="http://example.com">$2</xs:sessionId>
</ns:testMethod>

通过这种方式,您可以在 payload factory mediator 中使用 CDATA。

关于xml - WSO2 ESB 有效负载工厂中的 CDATA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com