2016-09-30 10 views
0

CSVファイルをXMLにマップすると考えられますが、出力は各フィールドのオブジェクトを作成しています。XMLでオブジェクトとしてCSVフィールドを作成するMule Dataweave

期待される結果(例として使用中のメッセージ出力を変換):私は取得しています何

<?xml version="1.0"?> 
<User> 
    <UserId>ON1234</UserId> 
    <UserStatus>client1234</UserStatus> 
</User> 

がある:私はUSERSTATUSのマッピングを追加すると

<?xml version='1.0' encoding='windows-1252'?> 
<User> 
    <UserId> 
    <UserId></UserId> 
    <UserId>ON1234</UserId> 
    <UserId></UserId> 
    <UserId>ON1235</UserId> 
    </UserId> 
</User> 

それはこのエラーを示しています。

java.util.NoSuchElementException: None.get 

CSVファイル(トランスフォームメッセージ入力の例として使用):

UserId,UserStatus 
ON1234,active 
ON1235,active 

ミュールフローXML

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

<mule xmlns:ftp="http://www.mulesoft.org/schema/mule/ftp" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:sftp="http://www.mulesoft.org/schema/mule/sftp" xmlns:batch="http://www.mulesoft.org/schema/mule/batch" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="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/sftp http://www.mulesoft.org/schema/mule/sftp/current/mule-sftp.xsd 
http://www.mulesoft.org/schema/mule/batch http://www.mulesoft.org/schema/mule/batch/current/mule-batch.xsd 
http://www.mulesoft.org/schema/mule/ee/ftp http://www.mulesoft.org/schema/mule/ee/ftp/current/mule-ftp-ee.xsd 
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd 
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/ftp http://www.mulesoft.org/schema/mule/ftp/current/mule-ftp.xsd"> 
    <http:request-config name="HTTP_Request_Configuration" host="${host}" port="${userprocess.port}" doc:name="HTTP Request Configuration"></http:request-config> 
    <sftp:connector name="SFTP" validateConnections="true" doc:name="SFTP"/> 
    <flow name="userexperienceFlow" > 
     <sftp:inbound-endpoint connector-ref="SFTP" host="localhost" port="2222" path="//input" user="${ftp.user}" password="${ftp.password}" responseTimeout="10000" doc:name="SFTP"/> 
     <dw:transform-message metadata:id="59fade01-691b-41c6-a0b0-a9ff4b591d68" doc:name="Transform Message"> 
      <dw:input-payload doc:sample="list_csv_4.csv"/> 
      <dw:set-payload><![CDATA[%dw 1.0 
%output application/xml 
--- 
{ 
    User: { 
     UserId: payload.UserId, 
     UserStatus: payload.UserStatus 
    } 
}]]></dw:set-payload> 
     </dw:transform-message> 
     <object-to-string-transformer doc:name="Object to String"/> 
     <logger level="INFO" doc:name="Logger"></logger> 
    </flow> 
</mule> 

おかげ

答えて

0

あなたの入力は、ユーザのリストであり、あなたが唯一のユーザーを作成しようとしているとして、あなたの期待される結果は、混乱しています。

<Users> 
    <User> 
    <UserId>ON1234</UserId> 
    <UserStatus>active</UserStatus> 
    </User> 
    <User> 
    <UserId>ON1235</UserId> 
    <UserStatus>active</UserStatus> 
    </User> 
</Users> 

それとも1人のユーザーがこの

%dw 1.0 
%output application/xml 
--- 
(payload map { 
    User : { 
     UserId: $.UserId, 
     UserStatus: $.UserStatus 
    } 
})[0] 

またはこの

[0]出力で最初の要素を返します
%dw 1.0 
%output application/xml 
--- 
User : { 
    UserId: payload[0].UserId, 
    UserStatus: payload[0].UserStatus 
} 

を試してみてください取得するために生成し、この

%dw 1.0 
%output application/xml 
--- 
Users: {(payload map { 
    User : { 
     UserId: $.UserId, 
     UserStatus: $.UserStatus 
    } 
})} 

をお試しください

<User> 
    <UserId>ON1234</UserId> 
    <UserStatus>active</UserStatus> 
</User> 

これが役に立ちます。

+0

感謝してください。それは:) – user3165854

0

こんにちは、以下のスクリプトの使用

User:{ 
(payload map { 
Users:{ 
($) 
} 
}) 
関連する問題