我有一个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
".
答案 0 :(得分:1)
问题在于,正如错误消息所指出的那样,您正在尝试将对象转换为数组。这是一个问题,因为要制作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($)
答案 1 :(得分:0)
以下dw看起来像是一种魅力,
%dw 2.0
output application/csv headerLineNumber = 0 , header = true
---
[{
firstName: payload.person.firstName,
lastName: payload.person.lastName
}
]