次のようなデータを返す wso2 DSS サービスを呼び出しています。
<IdentifierCollection xmlns="http://tempuri.org/">
<Identifier>
<One>1</One>
<Two>2</Two>
<Three>3</Three>
</Identifier>
</IdentifierCollection>
Dss を呼び出すには、私の esb コードは次のとおりです。
<payloadFactory>
<format>
<p:GetIdentifier xmlns:p="http://tempuri.org/">
<xs:ID xmlns:xs="http://tempuri.org/">$1</xs:ID>
</p:GetIdentifier >
</format>
<args>
<arg expression="get-property('ID')"/>
</args>
</payloadFactory>
<send receive="ResponseOfGetIdentifier">
<endpoint key="IdentifierEP"/>
</send>
今、私の ResponseOfGetIdentifier シーケンスで、プロパティのすべてのデータをキャプチャしています
<sequence xmlns="http://ws.apache.org/ns/synapse" name="ResponseOfGetIdentifier">
<iterate xmlns:ns="http://org.apache.synapse/xsd" xmlns:p="http://tempuri.org/" preservePayload="true" attachPath="//p:EntriesCollection" expression="//p:EntriesCollection/p:Entries" id="IterateForResponse">
<target>
<sequence>
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:p="http://tempuri.org" name="ResponseOne" expression="//p:Identifier/p:one" scope="default" type="STRING"/>
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:p="http://tempuri.org" name="ResponseTwo" expression="//p:Identifier/p:Two" scope="default" type="STRING"/>
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:p="http://tempuri.org" name="ResponseThree" expression="//p:Identifier/p:Three" scope="default" type="STRING"/>
<payloadFactory>
<format>
<tns:ProductIdentifier xmlns:tns="http://globalArther.products.com">
<IdentifierProducts>
<Product1>$1</Product1>
<Product2>$2</Product>
<Product3>$3</Product3>
</IdentifierProducts>
</tns:ProductIdentifier>
</format>
<args>
<arg expression="get-property('ResponseOne')"/>
<arg expression="get-property(''ResponseTwo)"/>
<arg expression="get-property('ResponseThree')"/>
</args>
</payloadFactory>
</sequence>
</target>
</iterate>
</sequence>
私のdss応答には識別子ノードの反復が1つしか含まれていないため、上記のコードは機能していますが、識別子ノードの数が複数の場合、つまり
<IdentifierCollection xmlns="http://tempuri.org/">
<Identifier>
<One>1</One>
<Two>2</Two>
<Three>3</Three>
</Identifier>
<Identifier>
<One>a</One>
<Two>b</Two>
<Three>c</Three>
</Identifier>
</IdentifierCollection>
、私のペイロードは 1 つのデータしか取得できないため、2 番目の反復データを取得し、単一の結果のみを次のように表示します。
<tns:ProductIdentifier xmlns:tns="http://globalArther.products.com">
<IdentifierProducts>
<Product1>a</Product1>
<Product2>b</Product>
<Product3>c</Product3>
</IdentifierProducts>
</tns:ProductIdentifier>
しかし、私は私の応答が欲しい:
<tns:ProductIdentifier xmlns:tns="http://globalArther.products.com">
<IdentifierProducts>
<Product1>1</Product1>
<Product2>2</Product>
<Product3>3</Product3>
</IdentifierProducts>
<IdentifierProducts>
<Product1>a</Product1>
<Product2>b</Product>
<Product3>c</Product3>
</IdentifierProducts>
</tns:ProductIdentifier>
だから今私の質問はどうすればそれを行うことができるか、つまりどうすればペイロードを動的にすることができるか、つまりペイロードにすべての反復を追加したいということです。回答をお待ちしております。よろしくお願いします