Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops WSO2迭代从vfs文件获取属性_Loops_Wso2_Vfs - Fatal编程技术网

Loops WSO2迭代从vfs文件获取属性

Loops WSO2迭代从vfs文件获取属性,loops,wso2,vfs,Loops,Wso2,Vfs,我用的是WSO2和VFS。我需要获取传入文件,fileinput.xml并将id字段记录在一起。VFS已启用且功能正常,当我将fileinput.xml移动到我的test_in文件夹时,它会得到适当的处理并正确地放入test_out或test_failure。我已经阅读了大量的在线文档,但无法理解如何做以下工作 我的问题是 如何从我的文件输入.xml中获取属性 如何迭代ID并将它们连接到日志中 fileinput.xml <soapenv:Envelope xmlns:soapen

我用的是WSO2和VFS。我需要获取传入文件,fileinput.xml并将id字段记录在一起。VFS已启用且功能正常,当我将fileinput.xml移动到我的test_in文件夹时,它会得到适当的处理并正确地放入test_outtest_failure。我已经阅读了大量的在线文档,但无法理解如何做以下工作

我的问题是

  • 如何从我的文件输入.xml中获取属性
  • 如何迭代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>
    
    
    测试1
    A.
    B
    测试2
    3.
    4.
    
    我的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>
    
    
    移动
    移动
    5.
    file:///Users/myuser/test_in
    file:///Users/myusertest_out
    file:///Users/myuser/test_failure
    .xml
    文本/xml
    
    我的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>
    
    
    
    您可以使用iterate mediator对“id”元素进行迭代,并使用操作范围中的属性连接所有id值。请参阅

    谢谢,我今天会尽快尝试,如果有效,我会接受。