[英]Convert xml to csv using dataweave 2.0
我有一個person.xml,
<?xml version="1.0" encoding="UTF-8"?>
<person>
<firstName>First Name</firstName>
<lastName>Last Name</lastName>
</person
我有person.xsd,
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstName" type="xs:string"/>
<xs:element name="lastName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我需要將其轉換為person.csv,
firstName,lastName
First Name,Last Name
我在Windows 10上使用Anypoint Studio 7.3,我在使用偵聽器,讀取(文件)xml。
請參閱下面的轉換消息dw,
%dw 2.0
output application/csv separator=",", header=true
---
payload
我在執行流程時收到以下消息,
"Cannot coerce Object { encoding: UTF-8, mediaType: text/xml; charset=UTF-8, mimeType: text/xml, raw: org.mule.weave.v2.el.SeekableCursorStream@2fdc554d } ({person: {firstName: "Shahjahan",lastName: "Ravjee"}} as Object {encoding: "U...) to Array, while writing CSV at payload." evaluating expression: "%dw 2.0
output application/csv separator=",", header=true
---
payload
".
問題是,如錯誤消息所示,您正在嘗試將對象轉換為數組。 這是一個問題,因為要制作CSV,您需要一個數組數組或一個對象數組。
通過將輸出設置為application/dw
可以查看當前是否正在輸出對象或數組。
%dw 2.0
output application/dw
---
payload
這將為您提供以下內容,如您所見,它是一個對象:
{
person: {
firstName: "First Name",
lastName: "Last Name"
}
}
CSV需要一個數組,因此我們需要做一些轉換才能做到這一點:
[
{
firstName: "First Name",
lastName: "Last Name"
}
]
如果將以下腳本設置為output application/dw
,則會看到它輸出了上面的腳本。 在這一點上,您可以確定自己具有創建CSV(在這種情況下為對象數組)所需的正確格式,因此將其切換回output application/csv
即可:
%dw 2.0
output application/csv
---
payload pluck($)
下列dw似乎起了作用,
%dw 2.0
output application/csv headerLineNumber = 0 , header = true
---
[{
firstName: payload.person.firstName,
lastName: payload.person.lastName
}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.