如何在SAP CPI中检查传入的XML文件是否为空

2020-08-18 16:10发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用Https适配器发送xml文件。 在我的情况下,我必须检查文件是否为空,如果为空,则应结束,如果它包含xml数据,则应继续进行处理。 任何人都可以建议如何实现这一目标

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用Https适配器发送xml文件。 在我的情况下,我必须检查文件是否为空,如果为空,则应结束,如果它包含xml数据,则应继续进行处理。 任何人都可以建议如何实现这一目标

付费偷看设置
发送
6条回答
能不能别闹
1楼-- · 2020-08-18 16:37

您好 Vikranth

您可以使用[Router]步骤并保持条件以检查是否计数 节点> 0。

/root/count(ChileElementName)> 0

希望这会有所帮助!

感谢和问候,

Praveen T

SKY徐
2楼-- · 2020-08-18 16:27

嗨Praveen

如果这两种情况都是完全空的有效负载和XML文档,则XML路由条件将在空的有效负载上失败。

致谢

Morten

打一壶酱油
3楼-- · 2020-08-18 16:37

Hi Vikranth

路由器步骤是前进的方向,正如Sriprasad和Praveen指出的那样。 但是,路由条件并不简单。 如果根本没有有效负载,则使用XPath条件将失败。 至于备选方案(一种简单表达式语言表达式),我不知道它是否可行。

什么将有效,是为了测试其中的空有效载荷 在Router之前的Groovy脚本中,将结果存储在一个属性中,然后在该属性上分支。 这是脚本:

导入com.sap.gateway.ip.core.customdev.util.Message

 def消息processData(消息消息){
     def主体= message.getBody(String)
     message.setProperty('EmptyPayload',body == null || body.isEmpty())
     返回讯息
 } 

这会在名为EmptyPayload的属性中存储true或false。

接下来,创建一个Router,默认路由为非空的情况(即您要执行一些工作) 。 另一个路由具有以下非XML路由条件:

 $ {property.EmptyPayload} ='true'

您可以通过结束消息事件终止此分支。

因此您的配置应如下所示:

注意事项

Morten

三十六小时_GS
4楼-- · 2020-08-18 16:41

您好 Vikranth Reddy

不,那会赢 不行 但是我建议您继续尝试一下实际系统上的建议。 关于非XML表达式:我提到过,如果有效负载为空,则XPath条件(= XML)将不起作用。 它将在运行时失败。

关于

Morten

d56caomao
5楼-- · 2020-08-18 16:40

Hello Vikrant,

使用路由器步骤执行此操作 检查。以下将提供更多详细信息。

/img/questions/12932533/please-explain-conditional-router-in-detail-in-cpi.html

Sriprasad Shivaram Bhat

何必丶何苦呢
6楼-- · 2020-08-18 16:40

嗨,Morten,

我可以在场景中使用$ {in.body.length} ='0'吗?

一周热门 更多>