如何在wso2 esb中获取属性介体的xml值

时间:2017-08-10 11:11:00

标签: wso2esb

当我打电话给某些服务时,响应就像下面一样。

<Code>
  <SimpleCode Id="206">
    <Attribute>(1 - 10)</Attribute>
  </SimpleCode>
  <SimpleCode Id="110">
    <StringA>ElementId=HSS1</StringA>
  </SimpleCode>
  <SimpleCode Id="109"/>
</Code>

我需要逐个将 Id 值分配给属性介体。就像这样,

 property_01 --> 216
 property_02 --> 110
 property_03 --> 109

以下是如何从回复中获取ID

<property expression="$body/Code/SimpleCode/@Id" name="FrameID" scope="default" type="STRING"/>

我尝试使用每个调解器,因为这个响应是动态的。此Id数量可以更改。

这是我的foreach meditor

<foreach expression="$body/Error">
   <sequence>
      <sequence key="Gen_ID"/>
   </sequence>
</foreach>

这是Gen_ID Sequense

<sequence name="Gen_ID" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<property expression="$body/Code/SimpleCode/@Id" name="FrameID" scope="default" type="STRING"/>

<log description="" level="full">
    <property name="=====FRAME_ID==========" value="=====FRAME_ID=========="/>
    <property expression="get-property('FrameID')" name="===ID VALUE===="/>
</log>

当我执行此操作时,put就是这样,

  

206110109

所有ID附加到酒店&gt;我该怎么解决这个问题。谢谢

1 个答案:

答案 0 :(得分:0)

在[1]中查看foreach mediator的描述。 “在中介之后,子消息将顺序合并回原始消息中的原始父元素.ForEach不会拆分消息流,这与迭代中介不同。它保证在所有迭代完成之前在同一个线程中执行。”

我猜你必须根据你的要求使用iterate mediator。

[1] https://docs.wso2.com/display/ESB490/ForEach+Mediator