根据ws响应更改WSO2 ESB中的文件名

时间:2015-10-20 10:59:53

标签: wso2 response sequence wso2esb transport

我在WSO2 ESB中得到了一个WS的响应,我将这个xml文件写在我本地机器上的一个目录中。我想根据内容更改.xml文件的名称。以下是用于写入文件的序列的代码:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="WriteFile">
<property name="transport.vfs.ReplyFileName" value="MyFile.xml" scope="transport"></property>
<property name="OUT_ONLY" value="true"></property>
<send>
  <endpoint>
     <address uri="vfs:file:///C:\MyFolder"></address>
  </endpoint>
</send>
</sequence>

如果我发现&#34; MyFile_2&#34;我现在想要MyFile_2.xml。在WS响应的特定标记中,如果我找到&#34; MyFile_3&#34;则为MyFile_3.xml;等等。我想我必须参数化我的序列,特别是值=&#34; MyFile.xml&#34;但我不明白该怎么做。

编辑:那么SOAP响应怎么样?我有一个像这样的SOAP答案:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap..............>
<soap:Body>
  <QueryStructureResponse xmlns="..........>
     <QueryStructureResult>
        <RegistryInterface xmlns="ht............>
           <Header>
              <ID>IT1001</ID>
              <Test>true</Test>
              <Name xml:lang="en">MY_FILENAME</Name>
               ............

我尝试过类似的方式,但是当我想用MY_FILENAME调用我的文件时出现了问题。 之前的REST响应操作是可以的,很好的答案Jean-Michel。

1 个答案:

答案 0 :(得分:3)

<property name="transport.vfs.ReplyFileName"
expression="concat('MyFile_',$body/root/child/text(),'.xml')" scope="transport"/>

其中$ body / root / child / text()是用于查找特定标记的XPath