groovy - Groovy 拆分结果
问题描述
脚本:
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.xml.XmlUtil;
import groovy.xml.StreamingMarkupBuilder;
import groovy.xml.*;
def Message processData(Message message) {
// get body
def body = message.getBody(java.io.Reader);
// parse xml body
def result = new XmlSlurper().parse(body);
def message1 = result.Message1;
def message2 = result.Message2;
def one = message1.EmployeeDataReplicationConfirmation.EmployeeDataReplicationConfirmation.collect { it.personId.text() }
def two = message2.queryCompoundEmployeeResponse.CompoundEmployee.collect { it.person.person_id.text() }
def intersect = one.intersect(two)
def userid1 = ((one - intersect) + (two - intersect))
println((one - intersect) + (two - intersect))
return message;
输出:
Console Output
Running...
[6107, 10140, 11774]
在 text 1 和 text2 字段中是不同的 id。此命令将为我提供两者相同的 ID。但他像这样给我:[6107, 10140, 11774] 但我需要它在 XML 中.. 就像.. 我需要这个
<Person>
<User>
<userid>6107</userid>
</User>
<User>
<userid>10140</userid>
</User>
<User>
<userid>11774</userid>
</User>
我该怎么做 ?谢谢 :)
解决方案
您可以使用MarkupBuilder
该类来创建您的 XML,假设您已经准备好数据,那么您唯一需要做的就是:
import groovy.xml.MarkupBuilder
def userIds = [6107, 10140, 11774]
def xml = new StringWriter()
def builder = new MarkupBuilder(xml)
builder.people() {
userIds.each { id ->
user() {
userId(id)
}
}
}
println xml
这将是输出
<people>
<user>
<userId>6107</userId>
</user>
<user>
<userId>10140</userId>
</user>
<user>
<userId>11774</userId>
</user>
</people>
有关使用 XML 的更多示例,您可以查看我的 gist Working with xml
推荐阅读
- docker - 如何重新定位移动到不同目录的 DDEV 项目?
- api - 邮递员:cookie 保存在哪里?
- json - 如何在 Postman 中发送表单数据
- tomcat - tomcat重定向端口8443
- c# - PowerShell 脚本无法执行 - Service Fabric
- javascript - Cloud Firestore 可以在 .get() 上正常工作,但不能在 .onSnapshot() 下使用 next.js
- python - 将多个 ggplot 组合成一个图并保存在 Python 中
- reactjs - 无法深层链接到嵌套的 React Native 导航器
- c++ - 为什么我可以自动声明指针而不是数组?
- javascript - 单击菜单内的任何链接时如何关闭全屏菜单?