使用 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
用于解析一个String
。 parse
可以与
InputStream
.
更正:
def body = message.getBody(java.lang.String)
我有一个输入 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
用于解析一个String
。 parse
可以与
InputStream
.
更正:
def body = message.getBody(java.lang.String)