我正在尝试使用groovy xml slurper来覆盖以下XML,目标是进入:
<message>ARoute</message>
标签。
<org.kie.server.api.model.ServiceResponse>
<type>SUCCESS</type>
<msg>Container container2 successfully called.</msg>
<result class="string">
<execution-results>
<result identifier="helloWorld">
<com.me.testproject.HelloWorld>
<message>ARoute</message>
</com.me.testproject.HelloWorld>
</result>
<fact-handle identifier="helloWorld" external-form="0:1:1985641387:1985641387:2:DEFAULT:NON_TRAIT:com.me.testproject.HelloWorld"/>
</execution-results></result>
</org.kie.server.api.model.ServiceResponse>
当我使用以下gpath时:
def response = new XmlSlurper().parseText(payload)
def result = response.result
println( "Output is " + result)
我得到以下(我期待)
Output is <execution-results>
<result identifier="helloWorld">
<com.me.testproject.HelloWorld>
<message>ARoute</message>
</com.me.testproject.HelloWorld>
</result>
<fact-handle identifier="helloWorld" external- form="0:37:1288414012:1288414012:74:DEFAULT:NON_TRAIT:com.me.testproject.HelloWorld"/>
</execution-results>
然而,当我尝试解析执行结果时,某些东西似乎已关闭,我的理解是因为xml节点名称中的hyphon,我应该把它放在字符中,但似乎没有做到这一点:
def response = new XmlSlurper().parseText(payload)
def result = response.result.'execution-results'
println( "The type is " + result)
输出: 类型是
如何深入挖掘XML消息以获取消息标记?
答案 0 :(得分:3)
默认情况下,gpath表达式的toString()
等同于text()
方法:它仅显示与表达式匹配的节点的文本内容。简而言之:表达式已经奏效,但您的println没有显示您的预期。
如果您希望将内容设为xml,则可以使用groovy.xml.XmlUtil.serialize(result)