首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
SAP CPI 教程004 如何通过groovy修改XML节点属性值
📅 2026/9/16 14:49:18
✍️ 爱科研究院
👁 阅读 3,247
SAP SuccessFactors 的 API 会因版本和类型的不同返回不同格式的数据。核心的 API 包括标准的OData API主要返回 JSON 或 ATOM XML以及传统的SFAPI SOAP API基于 XML。一 SuccessFactors集成涉及的一些名词解释查询参数 ($select, $expand, $filter)支持标准的 OData 查询方法来过滤、筛选和展开关联数据满足不同获取数据的场景。SAML OAuth支持通过 SAML 断言获取 OAuth 访问令牌的模式用于安全地进行 API 调用。Picklist 值查询时可以请求展开picklistLabels导航属性在响应中直接获取标签文本而非 ID减少额外查询。字段映射与布尔值集成时注意数据类型映射尤其在与其他系统对接场景中SuccessFactors 的布尔值 (true/false) 可能会被转换为1/0。Integration Center 配置可以在Integration Center通过界面化方式创建数据集成并选择 XML 格式输出降低配置难度。Compound Employee API一个 SOAP API可用于通过单一请求检索一个或多个员工的完整或部分数据通常通过 XPath 寻址来提取指定信息。二 自定义CPI场景如何修改替换XML节点的值2.1 方式一 xml.Content.toString().replace(Jane, 刘巍)这里关键就是replace方法可以替换节点或者节点属性值例如下图中的context节点有个jane的关键子我现在用刘巍替换jane。import com.sap.it.script.v2.api.Message import groovy.xml.XmlSlurper import groovy.xml.StreamingMarkupBuilder def Message processData(Message message) { // 1. CPI 强制要求流式读取消息体无报错 def reader message.getBody(java.io.Reader) // 2. 用 XmlSlurper 解析CPI 唯一推荐 def xml new XmlSlurper().parse(reader) xml.Content xml.Content.toString().replace(Jane, 刘巍) // Serialize the modified XML def updatedXml groovy.xml.XmlUtil.serialize(xml) message.setBody(updatedXml) // Set the modified XML as the message body return message }import com.sap.gateway.ip.core.customdev.util.Message; def Message processData(Message message) { def body message.getBody(java.lang.String) as String; def messageLog messageLogFactory.getMessageLog(message); if(messageLog ! null) { messageLog.setStringProperty(log2,formid) messageLog.addAttachmentAsString(log2,body,text/plain); } return message; }2.2 方式二 循环节点修改第二种方式是每个循环每个节点例如下图中有两个order的父节点每个order节点下面有两个子节点status现在我只是想替换第一个status节点的值。import com.sap.it.script.v2.api.Message import groovy.xml.XmlParser import groovy.xml.XmlNodePrinter import java.io.StringWriter def Message processData(Message message) { // 1. 解析 def reader message.getBody(Reader) def root new XmlParser().parse(reader) // 2. 循环修改 root.order.each { order - // 找到 order 下的 status 节点 def statusNode order.status[0] // status[0] 取第一个因为可能多个同名 if (statusNode) { statusNode.value completed // 直接修改节点值 } } // 3. 将修改后的树写回 def writer new StringWriter() new XmlNodePrinter(new PrintWriter(writer)).print(root) message.setBody(writer.toString()) return message }
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/16 14:44:18
asp.NET新闻发布系统:从源码数据库到IIS部署全攻略
2026/9/16 14:44:18
SSM+Vue绿色农产品推广网站开发实战:从数据建模到部署验收
2026/9/16 14:44:18
在 Flue 中接入 Salesforce Marketing Cloud Engagement ENS 渠道:签名校验、批量事件与租户绑定 Fetch 客户端实战
2026/9/16 18:09:58
Kali下arpspoof安装排错与ARP断网攻击实战演示
2026/9/16 18:09:58
头脑风暴优化算法BSO:Matlab实现、参数调优与混合变量实战
2026/9/16 18:09:58
MathType 几何符号输入技巧:快捷键、字体与公式编号排查
2026/9/16 18:09:58
Docker小白索引笔记:Windows环境MySQL 8.0容器化实战
2026/9/16 18:09:57
select与textarea实战:从基础属性到动态赋值与框架适配
2026/9/16 18:04:57
Python+Spark构建电力窃漏电识别流水线
2026/9/16 0:00:15
嵌入式三大高薪赛道:车规功能安全、RISC-V固件架构、边缘AI部署
2026/9/16 0:00:15
Zephyr 移植指南:SAM R34 Xplained Pro(samr34_xpro)评估板支持与 LoRa 开发实战
2026/9/16 0:00:15
纯HTML+SVG图解工具:出版级架构图的语义化生成方案
2026/9/15 13:08:25
拯救者Y7000黑屏故障排查与维修实战指南
2026/9/16 7:38:03
AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
2026/9/16 1:54:57
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化