处理Dataweave中的NULL xml节点

时间:2015-10-05 11:57:01

标签: mule mule-studio mule-component mule-el dataweave

如何在mule数据编织中访问正文和/或避免xml节点中的NULL值错误。

考虑这是我的节点:

%dw 1.0
%input payload application/xml
%output application/java 
---
(payload.catalog.*product default []) map  {
    CatalogDetails:{
            CatalogId:payload.catalog.@catalog-id
    },
    ProdDetails:{
                product-id:$.@product-id,
                mode:$.@mode,
                ean:$.ean,
                upc:$.upc,
                min-order-quantity:$.min-order-quantity,    
                display-name:$.display-name,
                short-description:$.short-description
    },
CustValues: { (
            ($.custom-attributes.*custom-attribute default []) map {      
                (sellByUnitVal: $)  when ($.@attribute-id) == "sellByUnit" ,
                (VOLUMEVal: $) when ($.@attribute-id) == "VOLUME",
                (UnitMeasureVal: $) when ($.@attribute-id) == "UnitMeasure"
             } 
        ) }
   }

我的Dataweave代码是:

[]

第一个产品节点没有收到正文。我尝试使用默认users,但它不起作用。我怎样才能确保它总是收到一个身体?

2 个答案:

答案 0 :(得分:0)

您的XML示例不是您在DataWeave脚本中使用的完整且有效,缺失和upc值等。

你的解决方案可能就像检查节点的大小一样,如果它是0则用空格填充op,如果没有执行你的普通脚本。

如果您有完整的示例可以提供帮助。

答案 1 :(得分:0)

我找到了一种处理空节点的方法,因为我们可以使用filter来跳过空节点,

shadowPane

使用此方法,我们将空或非空标签控制到转换中。