WSO2从vfs文件迭代获取属性

问题描述:

我正在使用WSO2和VFS。我需要将传入文件,fileinput.xml和日志ID字段在一起。当我将我的fileinput.xml文件移动到我的test_in文件夹中时,它将被正确地处理并放入test_outtest_failure。我已经阅读了很多在线文档,但一直无法围绕如何执行以下操作。WSO2从vfs文件迭代获取属性

我的问题是

  1. 我如何从我的fileinput.xml的属性?
  2. 如何迭代ID并在日志中将它们连接在一起?

fileinput.xml

<soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <customers> 
      <customer> 
       <id>testid1</id> 
       <prop1>a</prop1> 
       <prop2>b</prop2> 
      <customer/> 
      <customer> 
       <id>testid2</id> 
       <prop1>3</prop1> 
       <prop2>4</prop2> 
      <customer/> 
     </customers> 
    </soapenv:Body> 
</soapenv:Envelope> 

我WSO2代理文件

<?xml version="1.0" encoding="UTF-8"?> 
<proxy 
    xmlns="http://ws.apache.org/ns/synapse" name="FileProxy" transports="vfs" startOnLoad="true" trace="disable"> 
    <target> 
     <parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter> 
     <parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter> 
     <parameter name="transport.PollInterval">5</parameter> 
     <parameter name="transport.vfs.FileURI">file:///Users/myuser/test_in</parameter> 
     <parameter name="transport.vfs.MoveAfterProcess">file:///Users/myusertest_out</parameter> 
     <parameter name="transport.vfs.MoveAfterFailure">file:///Users/myuser/test_failure</parameter> 
     <parameter name="transport.vfs.FileNamePattern">.*.xml</parameter> 
     <parameter name="transport.vfs.ContentType">text/xml</parameter> 
     <inSequence> 
      <log category="WARN" level="full"> 
       <property name="MESSAGE" value="In Sequence"/> 
      </log> 
      <clone> 
       <target sequence="fileWriteSequence"/> 
      </clone> 
     </inSequence> 
    </target> 
    <outSequence> 
     <log category="WARN" level="full"> 
      <property name="MESSAGE" value="Out Sequence"/> 
     </log> 
     <send/> 
    </outSequence> 
</proxy> 

我fileWriteSequence

<?xml version="1.0" encoding="UTF-8"?> 
<sequence name="fileWriteSequence"> 
    <log level="full"> 
     <property name="sequence" value="fileWriteSequence"/> 
    </log> 
    <property name="transport.vfs.ReplyFileName" expression="fn:concat(fn:substring-after(get-property('MessageID'), 'urn:uuid:'), '.txt')" scope="transport"/> 
    <property name="OUT_ONLY" value="true"/> 
    <send> 
     <endpoint name="FileEpr"> 
      <address uri="vfs:file:///Users/myuser/test_out"/> 
     </endpoint> 
    </send> 
</sequence> 

可以使用迭代中介遍历 '身份证'元素和用途操作范围中的一个属性,用于连接所有的id值。请参阅this

+0

谢谢,我会尽快尝试,如果今天能够,我会接受它是否有效。 –