2

我想从 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 获取文件中的值呢?

4

2 回答 2

2

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

转变

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

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

因为您正在对消息执行 XPath 操作。

于 2013-06-28T18:31:19.123 回答
0

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

<sales>
<header>
    <source>STORE1</source>
    <target>HEADOFFICE</target>
</header>
</sales> 
于 2013-06-28T17:40:06.487 回答