2013-08-26 22 views
0

我有一個流量ftp-> datamapper-> logger->數據庫端點如何訪問使用datamapper創建的嵌套數組列表值?

ftp等待一個xml文件。

datamapper具有xml文件的映射,該架構是使用生成默認值,使用生成文件架構從示例xml文件生成的,然後單擊創建映射。

現在我發送有效載荷到記錄器。

當我在控制檯打印有效載荷,在地圖上看起來像這樣:

:OrderIssueDate是{OrderHeader = {訂單編號= {BuyerOrderNumber = 11111},OrderIssueDate =星期五06月28日00:00:00 2013 EDT ...

編輯

什麼是騾子表達從ArrayList中提取BuyerOrderNumber。

我試圖使用XPath,它似​​乎並沒有工作。

我試過了#[xpath('/ OrderHeader/OrderNumber // BuyerOrderNumber')但這不起作用,因爲它是一張地圖,但是從mulesoft看文檔,它說xpath可以直接用在有效載荷來檢索值。

我試過#[payload ['BuyerOrderNumber']]。但我怎麼能得到嵌套級買家訂單號。謝謝。

configuration.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 = {訂單編號= {BuyerOrderNumber = 11111},OrderIssueDate =星期五06月28日00:00:00 EDT 2013}}}]

+0

我沒有在有效載荷中看到只有地圖的地圖列表,我錯過了什麼嗎? –

+0

抱歉,我是新來的騾子,所以它是地圖的地圖 – Masu

+0

我怎樣才能訪問地圖的地圖?那是什麼語法? #[有效載荷[ 'OrderHeader'[ 'ORDERNUMBER'[ 'BuyerOrderNumber']]]]? – Masu

回答

1

要檢索OrderIssueDate領域,用途:

#[message.payload[0].OrderHeader.OrderIssueDate] 
+0

抱歉,這條消息被切斷。 – Masu

+0

嗯它說它是類型arraylist,是否使用不同的語法? – Masu

+0

消息有效負載是類型:ArrayList 代碼:MULE_ERROR - 2 ---------------------------------- ---------------------------------------------- 異常堆棧是: 1.無法爲類實例創建輸入流:'class java.util.LinkedHashMap'。 (java.lang.RuntimeException) – Masu