点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有两个问题。
从SOAP请求收到的响应数据:
< textData>对象ID 2019-01-09_R1JKES00000001 2019-04-22_R1JKTS00000040
用例是从上述
第1部分:
一种方法是从基于SOAP的XML响应中解析数据,并从响应中的特定标记中解析内容。
我尝试了多种方法,但并没有成功。 我尝试在content修饰符中创建Exchange属性,以按如下所示通过Xpath转发数据,
值指定为:/ns:dataTransferResponsePart/responseData/formattedData/textData
我尝试使用/ns:名称空间在名称空间映射中指定,但是由于该名称空间用于其他来源,因此不允许添加。
第2部分:
放弃上述方法后,我尝试使用groovy脚本来解析xml内容并按如下方式从标记中获取数据:
导入com.sap.gateway.ip.core.customdev.util.Message; 导入java.util.HashMap; 导入groovy.util.XmlSlurper; 导入org.slf4j.Logger; 导入org.slf4j.LoggerFactory; def消息processData(消息消息){ 记录器日志= LoggerFactory.getLogger(this.getClass()); 尝试{ def body = message.getBody(java.lang.String)as String; def downloadResponse = new XmlSlurper()。parseText(body); def download_data = downloadResponse.ns:dataTransferResponsePart.responseData.formattedData.textData.text(); message.setData(download_data); } catch(异常例外){ log.error(" processData错误",ex); } 返回消息; }
任何有关解析和将数据设置为正文中的信息的帮助都非常有用。
(26.8 kB)
嗨,Smruti
非常感谢,您不需要Groovy脚本即可执行此操作。 您可以使用可靠的旧Content Modifier来解决它,这也是您的第一种方法。
您可以将XPath表达式更改为/*/responseData/formattedData/textData并完成所需的操作。
在这种情况下,您不需要名称空间映射,但是尽管如此,我还是想澄清一下。 如果有问题的URI已经映射到其他前缀,则只需使用该前缀即可。 如果将相同的前缀映射到其他URI,请将您的URI映射到其他前缀(例如ns1或其他),然后改用该前缀。 前缀无关紧要(只要您始终使用它们即可);
注意,
Morten
顺便说一句,这是一个非常好的问题。 您将详细描述到目前为止的尝试以及遇到的困难。 谢谢!!
致谢,
Morten
感谢Morten的回复。 该解决方案效果很好。
一周热门 更多>