Как я могу получить доступ к телу и/или избежать ошибки значений NULL в узлах xml в переплетении данных мула.
Считайте, что это мой узел:
<catalog>
<product product-id="D158413" mode="delete"/>
<product product-id="556204380">
<ean>5014414203648</ean>
<display-name>Double duvet cover</display-name>
<long-description>Line</long-description>
<online-flag>true</online-flag>
<available-flag>true</available-flag>
<searchable-flag>true</searchable-flag>
<tax-class-id>default</tax-class-id>
<brand>Linea</brand>
<manufacturer-name>Linea</manufacturer-name>
<custom-attributes>
<custom-attribute attribute-id="Care Instructions">Machine</custom-attribute>
<custom-attribute attribute-id="Colour">Pink</custom-attribute>
<custom-attribute attribute-id="Finish">Plain</custom-attribute>
<custom-attribute attribute-id="Guarantee">N/A</custom-attribute>
</product>
</catalog>
Мой код Dataweave:
%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"
}
) }
}
Первый узел Product не получает тело. Я пытался использовать []
по умолчанию, но это не работает. Как я могу убедиться, что он всегда получает тело?