如何解决Mule-Dataweave 转换问题
我在为以下有效负载编写数据编织表达式时看到以下错误。如何解决此问题(所有 XML 格式)?
XML 文件:
<Interactions
xmlns="urn:astrazeneca:na:Activity:domain:3"
xmlns:ns0="urn:astrazeneca:na:Activity:domain:3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
SchemaVersion="3.1">
<ns0:Interaction>
<InteractionDetails CreatedOnDate="2020-01-07T00:40:38"
RecordCompanyCode="AZN"
RestrictionGroup="NONE"
UpdatedOnDate="2020-01-07T00:40:39">
<StartDate>2020-01-07T00:40:18</StartDate>
<EndDate>2020-01-07T00:40:18</EndDate>
<Location xsi:type="LocationAddress">
<AddressLine LineNo="1">6089 N 1ST ST STE 102</AddressLine>
<CityName>FRESNO</CityName>
</Location>
<RelatedInteraction>
<RelationshipType>is_a_child_of</RelationshipType>
</RelatedInteraction>
</InteractionDetails>
</ns0:Interaction>
</Interactions>
表达:
%dw 2.0
output application/xml
---
"Interactions" : payload.Interactions mapObject {
"Interaction" : $ mapObject {
"InteractionDetails" : $ mapObject {
"Location" : $ - "AddressLine"
}
}
}
错误:
You called the function '-' with these arguments:
1: String ("2020-01-07T00:40:18")
2: String ("AddressLine")
解决方法
假设您要删除所有出现的给定元素,您可以基于以下 DataWeave 表达式来构建最终解决方案:
%dw 2.0
fun removeElements(element,elements) =
element mapObject (value,key) -> {
((key):
if (value is Object)
removeElements(
if (elements is Array) value -- elements //if elements is an array
else value -- (elements splitBy ','),elements) //if elements is a string with comma separated elements
else value)
}
output application/xml
---
// All three options will be accepted by the removeElements function
removeElements(payload,"AddressLine")
//removeElements(payload,["AddressLine","CityName"])
//removeElements(payload,"AddressLine,CityName")
以下输入:
<Interactions
xmlns="urn:astrazeneca:na:Activity:domain:3"
xmlns:ns0="urn:astrazeneca:na:Activity:domain:3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
SchemaVersion="3.1">
<ns0:Interaction>
<InteractionDetails CreatedOnDate="2020-01-07T00:40:38"
RecordCompanyCode="AZN"
RestrictionGroup="NONE"
UpdatedOnDate="2020-01-07T00:40:39">
<StartDate>2020-01-07T00:40:18</StartDate>
<EndDate>2020-01-07T00:40:18</EndDate>
<Location xsi:type="LocationAddress">
<AddressLine LineNo="1">6089 N 1ST ST STE 102</AddressLine>
<CityName>FRESNO</CityName>
</Location>
<RelatedInteraction>
<RelationshipType>is_a_child_of</RelationshipType>
</RelatedInteraction>
</InteractionDetails>
</ns0:Interaction>
</Interactions>
将导致以下输出:
<?xml version='1.0' encoding='UTF-8'?>
<Interactions xmlns="urn:astrazeneca:na:Activity:domain:3" SchemaVersion="3.1">
<ns0:Interaction xmlns:ns0="urn:astrazeneca:na:Activity:domain:3">
<ns0:InteractionDetails CreatedOnDate="2020-01-07T00:40:38" RecordCompanyCode="AZN" RestrictionGroup="NONE" UpdatedOnDate="2020-01-07T00:40:39">
<ns0:StartDate>2020-01-07T00:40:18</ns0:StartDate>
<ns0:EndDate>2020-01-07T00:40:18</ns0:EndDate>
<ns0:Location xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LocationAddress">
<ns0:CityName>FRESNO</ns0:CityName>
</ns0:Location>
<ns0:RelatedInteraction>
<ns0:RelationshipType>is_a_child_of</ns0:RelationshipType>
</ns0:RelatedInteraction>
</ns0:InteractionDetails>
</ns0:Interaction>
</Interactions>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。