我在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。
答案 0 :(得分:3)
<property name="transport.vfs.ReplyFileName"
expression="concat('MyFile_',$body/root/child/text(),'.xml')" scope="transport"/>
其中$ body / root / child / text()是用于查找特定标记的XPath