Изменение имени файла в WSO2 ESB в соответствии с ответом ws

у меня есть ответ от WS в WSO2 ESB, и я пишу этот 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>

Теперь я хотел бы иметь MyFile_2.xml, если я найду «MyFile_2» в определенном теге ответа WS, или MyFile_3.xml, если я найду «MyFile_3» и так далее. Я думаю, что должен параметризовать свою последовательность и, в частности, значение = "MyFile.xml", но я не понимаю, как это сделать.

РЕДАКТИРОВАТЬ: А как насчет ответа 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 в порядке, отличный ответ Жан-Мишель.


person FDC    schedule 20.10.2015    source источник


Ответы (1)


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

где $body/root/child/text() — это XPath, используемый для поиска вашего конкретного тега.

person Jean-Michel    schedule 20.10.2015
comment
Как насчет ответа JSON? Он отлично работает с ответом XML, но я не могу извлечь свой текст из JSON... я пробовал с goessner.net/articles/JsonPath, но ничего - person FDC; 12.01.2017
comment
используйте json-eval() в своем выражении, что-то вроде concat('MyFile_',json-eval($.elmt1.child1), '.xml'). См. docs.wso2.com/display/ESB481/JSON+Support. - person Jean-Michel; 12.01.2017
comment
я пытаюсь использовать json-eval таким образом: concat('Meteo_',json-eval($.city.name),'.xml') но wso2 esb не сохраняет эту конфигурацию, я не могу вставить это в поле выражения. Если это полезно, я мог бы задать новый вопрос для более подробной информации. - person FDC; 13.01.2017
comment
Я разместил этот вопрос: stackoverflow.com/questions/41631258/ - person FDC; 13.01.2017