在 Informatica 集成分配步骤中支持可选参数
Supporting optional parameters in an Informatica Integration Assignment Step
我当前的实现请求正文不支持可选属性:
如果说 phoneHome
是 null
,那么想要的行为是 JSON
根本不包含该属性,例如我想要的是:
{
"phoneWork": "value here",
"phoneMobile": "value here",
"email": "value here"
}
不是:
{
"phoneHome": "",
"phoneWork": "value here",
"phoneMobile": "value here",
"email": "value here"
}
我尝试遍历事件中的所有元素并仅返回不为空的值,但我无法使其正常工作。
伪代码:
for $i in
(
$input.event_input[1]/xxx_Contact_Work_PHONE__c,
$input.event_input[1]/xxx_Contact_Home_PHONE__c,
$input.event_input[1]/xxx_Contact_Mobile_PHONE__c,
$input.event_input[1]/xxx_Contact_Contact_EMAIL1__c
)
return if ($i = "null")
then do nothing
else add the attribute to a JSON
有办法吗?
以下公式,当给定 XML 作为输入时,将删除所有没有数据的元素。
例子
使用以下输入
<note>
<to>Tove</to>
<from></from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<element></element>
</note>
它产生以下输出
<note>
<to>Tove</to>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
这是我找到的解决方案:
<!--Initialize variable with the input XML-->
let $sources:=$input.XML_input
<!--Initialize variable with the distinct nodes using X-PATH-->
let $labels:=fn:distinct-values($sources/*/fn:node-name(.))
return
for $s in $sources
return
<source>
{
for $l in $labels
<!--Return element if value exists, nothing if no value-->
return
if (fn:exists($s/*[fn:node-name()=$l]/text()))
then ($s/*[fn:node-name()=$l])
else ""
}
</source>
我当前的实现请求正文不支持可选属性:
如果说 phoneHome
是 null
,那么想要的行为是 JSON
根本不包含该属性,例如我想要的是:
{
"phoneWork": "value here",
"phoneMobile": "value here",
"email": "value here"
}
不是:
{
"phoneHome": "",
"phoneWork": "value here",
"phoneMobile": "value here",
"email": "value here"
}
我尝试遍历事件中的所有元素并仅返回不为空的值,但我无法使其正常工作。 伪代码:
for $i in
(
$input.event_input[1]/xxx_Contact_Work_PHONE__c,
$input.event_input[1]/xxx_Contact_Home_PHONE__c,
$input.event_input[1]/xxx_Contact_Mobile_PHONE__c,
$input.event_input[1]/xxx_Contact_Contact_EMAIL1__c
)
return if ($i = "null")
then do nothing
else add the attribute to a JSON
有办法吗?
以下公式,当给定 XML 作为输入时,将删除所有没有数据的元素。
例子
使用以下输入
<note>
<to>Tove</to>
<from></from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<element></element>
</note>
它产生以下输出
<note>
<to>Tove</to>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
这是我找到的解决方案:
<!--Initialize variable with the input XML-->
let $sources:=$input.XML_input
<!--Initialize variable with the distinct nodes using X-PATH-->
let $labels:=fn:distinct-values($sources/*/fn:node-name(.))
return
for $s in $sources
return
<source>
{
for $l in $labels
<!--Return element if value exists, nothing if no value-->
return
if (fn:exists($s/*[fn:node-name()=$l]/text()))
then ($s/*[fn:node-name()=$l])
else ""
}
</source>