当前位置: 首页 > 知识库问答 >
问题:

对于循环数据编织mulesoft问题

司马昕
2023-03-14

我是mulesoft的新手,已经编写了dataweave,用于迭代orderline项(xml中的product lineitem)。但是,它不起作用,它只插入一个订单行项目(订单行项目-产品行项目)任何指针?

输入

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<order xmlns="http://www.demandware.com/xml/impex/order/2006-10-31" order-no="00001101">
    <order-date>2020-07-09T12:55:28.663Z</order-date>
    <original-order-no>00001101</original-order-no>
    <product-lineitems>
        <product-lineitem>
            <product-id>65754</product-id>
        </product-lineitem>
        <product-lineitem>
            <product-id>65755</product-id>
        </product-lineitem>
    </product-lineitems>
</order>

数据编织

%dw 2.0
output application/java
ns ns0 http://www.demandware.com/xml/impex/order/2006-10-31
---
[{  
  Order_Confirmation_Number__c: payload.ns0#order.ns0#"current-order-no",
  "attributes": {
    "type": "PBSI__PBSI_Sales_Order__c",
    "referenceId": "SO"
  },                            
  "PBSI__Sales_Order_Lines__r": {
    "records": payload.*ns0#order.ns0#"product-lineitems" map((e,empindex) -> {                                                                     
      "attributes": {
        "type": "PBSI__PBSI_Sales_Order_Line__c",
        "referenceId": "SOL"
      },
      "PBSI__Item__c": "a0a1x000001PfWa",
      "PBSI__ItemDescription__c": e.ns0#"product-lineitem".ns0#"product-id"                                                                    
    })                                         
  } 
}]

共有1个答案

祁飞飙
2023-03-14

您需要为多值节点添加*,即产品线项目,然后您可以在输出中获得这两个值。详情如下:https://docs.mulesoft.com/mule-runtime/4.3/dataweave-selectors

%dw 2.0
output application/java
ns ns0 http://www.demandware.com/xml/impex/order/2006-10-31
---
[{  
            Order_Confirmation_Number__c: payload.ns0#order.ns0#"original-order-no",
            attributes: {
                "type": "PBSI__PBSI_Sales_Order__c",
                "referenceId": "SO"
            },                          
            PBSI__Sales_Order_Lines__r: {
            records: payload.ns0#order.ns0#"product-lineitems".*ns0#"product-lineitem" map((e,empindex) -> {
                    "attributes": {
                        "type": "PBSI__PBSI_Sales_Order_Line__c",
                        "referenceId": "SOL"
                    },
                    "PBSI__Item__c": "a0a1x000001PfWa",
                    "PBSI__ItemDescription__c": e.ns0#"product-id"                 
            })                                         
        }   
}]
 类似资料:
  • 如何在mule dataweave中编写嵌套循环 我有这样的代码, 但它给出的错误,我无法在此添加其他条件。我想在其他部分分配 $ 值

  • 本文向大家介绍dart 对于循环,包括了dart 对于循环的使用技巧和注意事项,需要的朋友参考一下 示例 允许两种类型的for循环: 和: for-in当简单地遍历一个Iterable集合时,该循环很方便。forEach您还可以调用Iterable行为类似于for-in以下对象的方法: 或者,更简洁地说:            

  • 我正在迭代JSON数据,获取数据并将其赋值给一个全局变量,当我在循环内打印变量时,我得到了所有数据,然而,当我在循环外打印变量时,我只得到了JSON对象的最后一些数据。我的目标是获取数据并将其作为函数的参数传递。我如何获取循环之外的所有数据?

  • 我试图使用mulesoft上的for-each块在节点Node3a上迭代,但似乎不起作用。你知道我怎样才能做到这一点吗?

  • 我有一个开发项目,使用SpringDataJPA和MapStruct在实体和DTO之间进行映射。上周我决定是时候解决vs问题了,我已经推迟了一段时间。我选择使用和在需要时加载属性。但是,在执行从实体到dto的映射时,我遇到了这个问题。我想我知道这在哪里发生,但我不知道如何通过它。 密码 我已经跟踪了当映射器试图映射角色依赖关系时发生的。对象有 中,这不再有效。 有人知道如何避免异常,同时正确映射我

  • 我有3个实体: 在用户实体中: 角色实体: 和User_info实体 我创建了其余的 API,以通过使用 JPA存储库查找所有用户全部 控制器 尝试运行其余api,结果是重复数据。 {“内容”:[{“id”: 1,“用户名”:“v 7001”,“密码”:“管理员”,“角色”:[{“id”: 1,“角色名称”:“ADMIN”}],“用户信息”:{“id”: 1,“全名”:“”,“名字”:“Jay c