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