0

我有一个流 ftp --> datamapper --> logger --> 数据库端点

ftp 等待一个 xml 文件。

datamapper 有一个 xml 文件的映射,模式是使用生成文件模式从示例 xml 文件生成到使用生成默认值的映射,然后单击创建映射。

现在我将有效负载发送到记录器。

当我在控制台中打印有效载荷时,地图如下所示:

: OrderIssueDate 是 {OrderHeader={OrderNumber={BuyerOrderNumber=11111}, OrderIssueDate=Fri Jun 28 00:00:00 EDT 2013,...

编辑

从该数组列表中提取 BuyerOrderNumber 的骡子表达式是什么。

我曾尝试使用 xpath,但它似乎不起作用。

我已经尝试过 #[xpath('/OrderHeader/OrderNumber//BuyerOrderNumber') 但这不起作用,因为它是一张地图,但是查看 mulesoft 的文档,它说 xpath 可以直接在有效负载上用于检索值.

我试过#[payload['BuyerOrderNumber']]。但我怎样才能获得嵌套级别的买家订单号。谢谢。

配置.xml:

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:jdbc-ee="http://www.mulesoft.org/schema/mule/ee/jdbc" xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:ftp="http://www.mulesoft.org/schema/mule/ee/ftp" xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/jdbc http://www.mulesoft.org/schema/mule/ee/jdbc/current/mule-jdbc-ee.xsd
http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd
http://www.mulesoft.org/schema/mule/ee/ftp http://www.mulesoft.org/schema/mule/ee/ftp/current/mule-ftp-ee.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">
    <jdbc-ee:mssql-data-source name="Source" user="" password="" url="jdbc:sqlserver://path" transactionIsolation="UNSPECIFIED" doc:name=""/>
    <jdbc-ee:connector name="Database" dataSource-ref="MS_SQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"/>
    <data-mapper:config name="new_mapping_grf" transformationGraphPath="new_mapping.grf" doc:name="DataMapper"/>
    <flow name="FlowFlow" doc:name="FlowFlow">
        <ftp:inbound-endpoint host="192.168.200.2" port="21"  user="username" password="pass" responseTimeout="10000" doc:name="FTP" pollingFrequency="10000"/>
        <data-mapper:transform config-ref="new_mapping_grf" doc:name="DataMapper"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>

        <jdbc-ee:outbound-endpoint exchange-pattern="one-way" queryKey="INSERT" queryTimeout="-1" connector-ref="Database" doc:name="Database">
            <jdbc-ee:query key="INSERT" value="INSERT INTO [dbo].[Order_Header]
           ([Create_Date])
     VALUES
           (  #[message.payload.Order.OrderHeader.OrderIssueDate]
           )"/>
        </jdbc-ee:outbound-endpoint>
    </flow>
</mule>

记录器有效负载输出:

org.mule.api.processor.LoggerMessageProcessor:[{OrderHeader={OrderNumber={BuyerOrderNumber=11111},OrderIssueDate=Fri Jun 28 00:00:00 EDT 2013}}}]

4

1 回答 1

1

要检索该OrderIssueDate字段,请使用:

#[message.payload[0].OrderHeader.OrderIssueDate]
于 2013-08-26T21:17:38.147 回答