Как я могу получить доступ к телу и/или избежать ошибки значений NULL в узлах xml в переплетении данных мула.Обработка NULL узлов xml в Dataweave
Рассмотрим это мой узел:
<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:[email protected]
},
ProdDetails:{
product-id:[email protected],
mode:[email protected],
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 ([email protected]) == "sellByUnit" ,
(VOLUMEVal: $) when ([email protected]) == "VOLUME",
(UnitMeasureVal: $) when ([email protected]) == "UnitMeasure"
}
) }
}
Первый узел продукта не получит тело. Я пробовал использовать default []
, но он не работает. Как я могу убедиться, что он всегда получает тело?
Разве это не третий продукт, который является нулевым? Можете ли вы показать нам код, который вы используете для чтения узлов xml? – StillLearnin
Я поделился своим примером кода. Пожалуйста, посмотрите –