I am trying to remove DTOSteps node if it contains an ID attribute.
Input XML:
<?xml version="1.0" encoding="UTF-8"?>
<DTOApplication id="Application-1660258480-1493174910" ApplicationNumber="AP-00006354">
<DTOLine id="Line-101746978-972142087" StatusCd="Active" >
<DTOCoverage id="Coverage-1713637162-341585712" CoverageCd="MINP" >
<DTOSteps>
<DTOStep Order="1" Name="Premium"/>
<DTOStep Order="2" Name="Term Factor">
<DTOSteps>
<DTOStep Order="1" Name="Minimum Premium" />
<DTOStep Order="2" Name="Rated Premium" />
</DTOSteps>
</DTOStep>
</DTOSteps>
</DTOCoverage>
<DTOCoverage id="Coverage-763105832-915106268" CoverageCd="TRIAL">
<DTOSteps id="Steps-Coverage-763105832-915106268">
<DTOStep id="Step-Coverage-763105832-915106268-Premium" Name="Premium" />
<DTOStep id="Step-Coverage-763105832-915106268-TermFactor" Name="Term Factor"/>
</DTOSteps>
</DTOCoverage>
</DTOLine>
<DTOCoverage id="Coverage-763105832-915106268" CoverageCd="EBRK" >
<DTOSteps id="Steps-Coverage-863105832-915106268">
<DTOStep id="Step-Coverage-863105832-915106268-Premium" Name="Base Rate"/>
<DTOStep id="Step-Coverage-863105832-915106268-TermFactor" Name="Term Factor"/>
</DTOSteps>
</DTOCoverage>
</DTOApplication>
I tried the dataweave 2.0 but it removes all the DTOSteps node from input xml.
My dataweave code:
%dw 2.0
output application/xml
fun FNtransformCoverage(x, index)=
x match {
case is Object -> x mapObject
if ($$ as String == "DTOCoverage" )
{
DTOCoverage @(( $$.@ )): $ - "DTOSteps"
}
else
(($$): FNtransformCoverage($, index+1))
else -> $
}
---
FNtransformCoverage(payload,1)
Expected output: https://github.com/Manikandan99/Map_request/blob/main/Transformed_output.xml
Any ideas please on how to remove DTOSteps which contains id using dataweave 2.0?