【问题标题】:how to map a value of Xml array to csv field如何将 Xml 数组的值映射到 csv 字段
【发布时间】:2020-01-16 13:29:02
【问题描述】:
  <?xml version="1.0"?>
    <tXML>
      <Header>
        <Source>1</Source>
        <Action_Type>Update</Action_Type>
        <Sequence_Number>0</Sequence_Number>
        <Batch_ID>4</Batch_ID>
        <Reference_ID>043</Reference_ID>
        <User_ID>S</User_ID>
        <Password>password</Password>
        <Message_Type></Message_Type>
        <Company_ID>J1</Company_ID>
        <Msg_Locale>English (United States)</Msg_Locale>
        <Msg_Time_Zone>Eastern Standard Time</Msg_Time_Zone>
        <Version></Version>
        <Internal_Reference_ID></Internal_Reference_ID>
        <Internal_Date_Time_Stamp></Internal_Date_Time_Stamp>
        <External_Reference_ID></External_Reference_ID>
        <External_Date_Time_Stamp></External_Date_Time_Stamp>
      </Header>
      <Message>
        <DistributionOrder>
          <LineItem>
            <DoLineNbr>1</DoLineNbr>
            <ItemName>135465</ItemName>
            <Description>A</Description>
            <UpdateActionType></UpdateActionType>
            <PackageType></PackageType>
            <DoLineStatus>Released</DoLineStatus>
            <InventoryAttributes>
              <InventoryType>F</InventoryType>
              <ProductStatus></ProductStatus>
              <BatchNbr></BatchNbr>
              <CountryOfOrigin></CountryOfOrigin>
              <ItemAttribute1>R</ItemAttribute1>
              <ItemAttribute2></ItemAttribute2>
              <ItemAttribute3></ItemAttribute3>
              <ItemAttribute4></ItemAttribute4>
              <ItemAttribute5></ItemAttribute5>
            </InventoryAttributes>
            <Comment>
              <NoteType>MB</NoteType>
              <NoteCode>20</NoteCode>
              <CommentText>[JPY_ _Mens_ _ _ _ _ _ _ _ _ _ _ ]</CommentText>
              <Visibility>0</Visibility>
            </Comment>
            <Comment>
              <NoteType>MB</NoteType>
              <NoteCode>13</NoteCode>
              <CommentText>[ _00016000.00000_.00000_.00000_ _ _ _ _ _ _ _ ]</CommentText>
              <Visibility>0</Visibility>
            </Comment>
            <Comment>
              <NoteType>SC</NoteType>
              <NoteCode>02</NoteCode>
              <CommentText>[ _ _ _ _R]</CommentText>
              <Visibility>0</Visibility>
            </Comment>
          </LineItem>
          <LineItem>
            <DoLineNbr>2</DoLineNbr>
            <ItemName>4550155140404</ItemName>
            <Description>AS LAMBSWOOL VNECK</Description>
            <UpdateActionType></UpdateActionType>
            <PackageType></PackageType>
            <DoLineStatus>Released</DoLineStatus>
            <InventoryAttributes>
              <InventoryType>F</InventoryType>
              <ProductStatus></ProductStatus>
              <BatchNbr></BatchNbr>
              <CountryOfOrigin></CountryOfOrigin>
              <ItemAttribute1>R</ItemAttribute1>
              <ItemAttribute2></ItemAttribute2>
              <ItemAttribute3></ItemAttribute3>
              <ItemAttribute4></ItemAttribute4>
              <ItemAttribute5></ItemAttribute5>
            </InventoryAttributes>
            <Comment>
              <NoteType>MB</NoteType>
              <NoteCode>20</NoteCode>
              <CommentText>[JPY_ _Mens_ _ _ _ _ _ _ _ _ _ _ ]</CommentText>
              <Visibility>0</Visibility>
            </Comment>
            <Comment>
              <NoteType>MB</NoteType>
              <NoteCode>13</NoteCode>
              <CommentText>[ _00016000.00000_.00000_.00000_ _ _ _ _ _ _ _ ]</CommentText>
              <Visibility>0</Visibility>
            </Comment>
            <Comment>
              <NoteType>SC</NoteType>
              <NoteCode>02</NoteCode>
              <CommentText>[ _ _ _ _R]</CommentText>
              <Visibility>0</Visibility>
            </Comment>
            </LineItem>
        </DistributionOrder>
      </Message>
    </tXML>

我在 XMl 上方映射到 CSV 管道分隔格式,需要有关如何循环 LineItem-Comment 以及检查 NoteType 和 NoteCode 以及打印 CommentText 值的帮助。

这是我的条件

Loop Over  /tXML/Message/DistributionOrder/LineItem/Comment 
If
/tXML/Message/DistributionOrder/LineItem/Comment/NoteType = SC and /tXML/Message/DistributionOrder/LineItem/Comment/NoteCode = 02
Then
Remove start and end index of /tXML/Message/DistributionOrder/LineItem/Comment/CommentText

我的 csv 数据编织看起来像这样

%dw 2.0
output application/csv header = false , separator = "|" , quoteValues = false
---
payload.tXML.Message.DistributionOrder.*LineItem map ((LineItem , indexofLineItem) ->  {

column_1: "000000002",
    column_2: (payload.tXML.Message.DistributionOrder.ProcessInfo.RefTextField8 splitBy "_")[0] replace "[" with "",
    column_3: if(payload.tXML.Message.DistributionOrder.ProcessInfo.RefNumberField1 != null) (payload.tXML.Message.DistributionOrder.ProcessInfo.RefNumberField1) else "00000000",
    column_4:"",
    column_5:"",
    column_6: "",
    column_7: "",
    column_8: "",
    .
    .
    .
    .
    .
    .
    coulmn_56: ?(
    If
/tXML/Message/DistributionOrder/LineItem/Comment/NoteType = SC and /tXML/Message/DistributionOrder/LineItem/Comment/NoteCode = 02
Then
Remove start and end index of /tXML/Message/DistributionOrder/LineItem/Comment/CommentText)



})

我需要为 column_56 映射。

【问题讨论】:

  • 请为 column_56 添加预期输出

标签: dataweave mulesoft


【解决方案1】:

这是获取commentText的映射,我不确定你要的是什么。

%dw 2.0
output application/csv header = false , separator = "|" , quoteValues = false
---
payload.tXML.Message.DistributionOrder.*LineItem map ((LineItem , indexofLineItem) -> {
    column_1: "000000002",
    column_56: (LineItem.*Comment[?($.NoteType == 'SC' and $.NoteCode == '02')][0].CommentText) replace "[" with "" replace "]" with ""
})

【讨论】:

  • 你能指导我如何从commentText中获取值R [ _ _ _ _R]
  • 我更新了答案以从文本中删除方括号。如果您还有其他问题,请告诉我。否则,请将答案标记为正确。谢谢!
  • 上面的代码正在打印 _ _ _ _R 像这样,但我正在寻找 R,请告诉我如何检索它。
  • 实则用下划线'_'分割CommentText的值并映射第五个值
  • 在您的示例中,该字符串的预期内容:[JPY_ _Mens_ _ _ _ _ _ _ _ _ _ _ ]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 2021-03-02
相关资源
最近更新 更多