【问题标题】:change original payload with wso2 esb使用 wso2 esb 更改原始有效负载
【发布时间】:2021-02-26 18:18:34
【问题描述】:

我在属性 du wso2 上保存了以下结构:

<ELEMENT>
   <ELEMENT_2>
   <ELEMENT_3>
   <ID> 173993 </ID>
   </ELEMENT_3>
   </ELEMENT_2>
   </ELEMENT>

我只想把 TEMP 带给孩子们:

<TEMP>
            <NAME>GEORGE</NAME>
            <COGNOME>MENDEZ</COGNOME>
            <BUSINESSNAME/>
            <CHANNEL>X091</CHANNEL>
        
   </TEMP>

我想在&lt;ELEMENT_2&gt;之后添加它们

最终结果:

 <ELEMENT>
   <ELEMENT_2>
   <NAME>GEORGE</NAME>
   <COGNOME>MENDEZ</COGNOME>
   <BUSINESSNAME/>
   <CHANNEL>X091</CHANNEL>
   <ELEMENT_3>
   <ID> 173993 </ID>
   </ELEMENT_3>
   </ELEMENT_2>
   </ELEMENT>

谢谢

【问题讨论】:

    标签: xpath wso2 wso2esb esb wso2ei


    【解决方案1】:

    您能否通过以下代理配置检查您的要求是否达到。

        <?xml version="1.0" encoding="UTF-8"?>
    <proxy xmlns="http://ws.apache.org/ns/synapse"
           name="enrichProxy"
           startOnLoad="true"
           statistics="disable"
           trace="disable"
           transports="http,https">
       <target>
          <inSequence>
             <property name="initial_payload" scope="default">
                <ELEMENT xmlns="">
                   <ELEMENT_2>
                      <ELEMENT_3>
                         <ID>173993</ID>
                      </ELEMENT_3>
                   </ELEMENT_2>
                </ELEMENT>
             </property>
             <call>
                <endpoint>
                   <http uri-template="http://run.mocky.io/v3/7c578a1d-5427-4325-9f00-4ad7bb80dd04"/>
                </endpoint>
             </call>
             <log level="custom">
                <property expression="$body//TEMP/*" name="******"/>
             </log>
             <respond/>
          </inSequence>
       </target>
       <description/>
    </proxy>
    

    Remove external tag with xpath wso2

    更新

    在这里,我使用丰富的中介将第二个属性 (..) 丰富回正文。

    <?xml version="1.0" encoding="UTF-8"?>
    <proxy xmlns="http://ws.apache.org/ns/synapse"
           name="enrichProxy"
           startOnLoad="true"
           statistics="disable"
           trace="disable"
           transports="http,https">
       <target>
          <inSequence>
             <property name="initial_payload" scope="default">
                <ELEMENT xmlns="">
                   <ELEMENT_2>
                      <ELEMENT_3>
                         <ID>173993</ID>
                      </ELEMENT_3>
                   </ELEMENT_2>
                </ELEMENT>
             </property>
             <property name="second_payload" scope="default">
                <TEMP xmlns="">
                   <NAME>GEORGE</NAME>
                   <COGNOME>MENDEZ</COGNOME>
                   <BUSINESSNAME/>
                   <CHANNEL>X091</CHANNEL>
                </TEMP>
             </property>
             <enrich>
                <source clone="true" property="second_payload" type="property"/>
                <target type="body"/>
             </enrich>
             <enrich>
                <source clone="true" xpath="$body//TEMP/*"/>
                <target action="child" xpath="$ctx:initial_payload//ELEMENT_2"/>
             </enrich>
             <log level="custom">
                <property expression="$ctx:initial_payload" name="******"/>
             </log>
             <respond/>
          </inSequence>
       </target>
       <description/>
    </proxy>
                                
    

    【讨论】:

    • 对不起,我不清楚,端点是什么?我只需要给一个我提前恢复的紧身衣,在某个元素之后添加它
    • 我使用端点调用来模拟获取第二个有效负载 ( ..)。你从哪里得到第二个有效载荷。是不是来自后端服务器调用。
    • 我没有看到任何返回,我发送了一个空白请求,好吗? @Shanaka Premarathna
    • 从哪里获得 TEMP 负载
    • 实际上,在映射我的有效负载后,在我将 TEMP 子项与 TEMP 标签一起保存在属性中之后,@Shanaka Premarathna
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多