将 XML 转换为 CSV,其中 XML 中的不同标签及其各自的子标签成为 CSV 的行项目

converting XML to CSV where different tags in XML and their respective sub tags become line items of the CSV

我正在尝试将附件标签中的属性标签设为 CSV 文件的行项目

我曾尝试使用 map 函数进行迭代,但我一次只能获取一个值。我想要的是这个 XML 中有两个附件类型标签,我想要它们各自的属性标签成为 CSV 中的每个行项目

 <Accessory Type="Panel">
    <PartNumber>9021447</PartNumber>
    <Attribute Name="DescCode">Operating Panel, White/PI White, Low E SmartSun Tempered Glass</Attribute>
    <Attribute Name="Mark_ID">41424</Attribute>
    <Attribute Name="Order_Quantity">1</Attribute>
    <Attribute Name="QUOTE_QUANTITY">1</Attribute>
    <Attribute Name="Quote_Quantity_Extended">1</Attribute>
    <Attribute Name="MarkName">0001</Attribute>
    <Attribute Name="US_ENERGY_STAR_CLIMATE_ZONE">Northern</Attribute>
    <Attribute Name="SubUnitID">1</Attribute>
    <Attribute Name="AW_Control_2">47AoYY</Attribute>
    <Attribute Name="ReferenceID">3</Attribute>
    <Attribute Name="OrderPONum"/>
    </Accessory>
    <Accessory Type="Screen">
    <PartNumber>2505930</PartNumber>
    <Attribute Name="Total_Pre_Price_in_USD">208.70</Attribute>
    <Attribute Name="Total_Price_in_USD">208.700</Attribute>
    <Attribute Name="QUOTE_QUANTITY">1</Attribute>
    <Attribute Name="Quote_Quantity_Extended">1</Attribute>
    <Attribute Name="DescCode">Insect Screen, Gliding, White</Attribute>
    <Attribute Name="Mark_ID">41424</Attribute>
    <Attribute Name="Order_Quantity">1</Attribute>
    </Accessory>

我试过把accessory标签下的属性做成line item

预期输出: 9021447|操作面板,White/PI 白色,Low E SmartSun 钢化玻璃|41424 //在下一行 25005930|208.70|1 //等等

这是我试过的代码 %dw 2.0 输出 application/json --- payload.m2oFile.m2oOrder.Unit.*Accessory map (value, index) -> { (index) : value.*Attribute filter($.@Name == "MarkID"), (index) : value.*Attribute filter($.@Name == "PRODTYPE"), (index) : value.*Attribute filter($.@Name == "UNIT_CODE") }

试试这个方法..

 %dw 2.0 
 output application/csv header=false
 --- 

 (payload.a.*Accessory map {
      PN: $.PartNumber,
      ($.*Attribute map  {
        (($$) : $)  if (isEmpty($) == false)
 })
 }
 )

应该给你输出如下:

PS:我必须将 "a" 作为根添加到 xml,否则 xml 的格式不正确..