使用 groovy 脚本通过 XmlSlurper 提取元素值

extract element value with XmlSlurper using groovy script

我有一个输入 xml,如下所示,我想提取 'Maker' 值并将其传递给一个元素:-

<?xml version="1.0" encoding="UTF-8"?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                ../../Di/xsd/Doc/Data_0100.xsd">
    <Area>
        <CreationDateTime>2020-11-30T15:47:44Z</CreationDateTime>
        <No>
            <Id1>146520459</Id1>
        </No>
    </Area>
    <text>
        <Catalog>
            <Part>
                <Id>12345</Id>
                <Revision/>
                <Mixer>rtg</Mixer>
            </Part>
            <Dis>
                <Maker>7874</Maker>
            </Dis>
        </Catalog>
    </text>
</Data> 

我试过如下,我需要获取 element2 并将其作为 属性 传递,但没有运气:-

import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.xml.MarkupBuilder;
def Message processData(Message message) {
     def body = message.getBody()
       
       def root = new XmlSlurper().parseText(body);
       
       def element2 = root.text.Catalog.Dis.Maker;
       message.setProperty("element2", element2.text());
       return message;
}

路径错误。请改用 root.text.Catalog.Dis.Maker

编辑

根据 OP,实际错误是:

Caused by: groovy.lang.MissingMethodException: No signature of method: groovy.util.XmlSlurper.parseText() is applicable for argument types: (ByteArrayInputStream) values: [java.io.ByteArrayInputStream@489dd356]

parseText用于解析一个Stringparse 可以与 InputStream.

更正:

 def body = message.getBody(java.lang.String)