来自VFS Transport WSO2 ESB中的文件的XPath

时间:2013-06-28 10:46:10

标签: wso2 wso2esb

我想从VFS传输处理的文件中读取一些值 我的档案是:

<sales>
<header>
    <source>STORE1</source>
    <target>HEADOFFICE</target>
</header>

所以我使用属性中介来获取我想要的值使用XPath。但是当我在Log Mediator中打印该属性时,它什么都不打印。我的代理人看起来像这样:

   <proxy name="Try1"
      transports="vfs"
      startOnLoad="true"
      trace="disable">
  <target>
     <inSequence>
        <property xmlns:ns="http://org.apache.synapse/xsd"
                  name="source"
                  expression="//header/source/text()"
                  scope="default"
                  type="STRING"/>
        <log level="full">
           <property xmlns:ns="http://org.apache.synapse/xsd"
                     name="Value_source"
                     expression="get-property('source')"/>
        </log>
     </inSequence>
  </target>
  <parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
  <parameter name="transport.PollInterval">15</parameter>
  <parameter name="transport.vfs.MoveAfterProcess">file:///Users/Target</parameter>
  <parameter name="transport.vfs.FileURI">file:///Users/Source</parameter>
  <parameter name="transport.vfs.MoveAfterFailure">file:///Users/Failure</parameter>
  <parameter name="transport.vfs.FileNamePattern">.*.txt</parameter>
  <parameter name="transport.vfs.ContentType">text/plain</parameter>
  <parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>

日志调解器结果是

[2013-06-28 16:59:49,939]  INFO - LogMediator Value_source=

那么如何使用XPath获取文件中的值?

2 个答案:

答案 0 :(得分:2)

问题是由传输参数ContentType设置的:

切换

<parameter name="transport.vfs.ContentType">text/plain</parameter>

<parameter name="transport.vfs.ContentType">application/xml</parameter>

因为你正在对消息进行XPath操作。

答案 1 :(得分:0)

问题在于您的文件内容。由于格式不正确,因此xpath表达式失败。您是否可以在输入内容中使用格式良好的xml?

<sales>
<header>
    <source>STORE1</source>
    <target>HEADOFFICE</target>
</header>
</sales>