2017-08-10 18 views
0

私はいくつかのサービス応答を呼び出すと以下のようになります。私は不動産仲介者にone.Likeこのずつ、ここでxml値をwso2 esbのプロパティメディエータに取得する方法

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

を各同上値を割り当てる必要が

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

が応答

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

からIDを取得する方法である私が試しましたこの応答は動的であるため、各メディエータに使用する必要があります。この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> 

私はこれを実行するとプットはこのようなものです、

があるさ

すべてのIDはプロパティに追加します>これをどのように解決できますか?ありがとう

+0

あなたは理由を説明できますか?動的な数のプロパティがある場合は、いくつのプロパティが存在するかわからないときに同じ問題を使用することがあると私には思えます。あなたのIDを後で使用するために保存したい場合は、use: Jan

答えて

0

[1]のforeach mediatorの説明を見てください。メディエーション後、サブメッセージは元のメッセージの元の親要素に順番にマージされます。メディエータを繰り返すのとは異なり、ForEachはメッセージフローを分割せず、すべての反復が完了するまで同じスレッドで実行されます。

あなたの要件に反復メディエーターを使用する必要がありますね。

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

関連する問題