Gre*_*ant 0 xml groovy markupbuilder
是否有一种简单的方法将a转换groovy.util.slurpersupport.Node为groovy.util.Node?
我试图XmlNodePrinter在一个节点上使用,来XmlSlurper进行一些快速调试.这是我的代码(可能不是最优雅的):
def xml = new XmlSlurper().parse( new File( path + pomFile ) )
def services = xml.build.plugins.plugin.configuration.services
services.children().findAll{ it.artifactId.text() == serviceName }.each { config ->
// begin section to dump "config" for debugging
def stringWriter = new StringWriter()
new XmlNodePrinter(new PrintWriter(stringWriter)).print(config[0])
println stringWriter.toString()
// end section to dump "config" for debugging
// do some other processing on the config node
}
Run Code Online (Sandbox Code Playgroud)
这会抛出以下内容config[0]:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'groovy.util.slurpersupport.Node@14712c3' with class 'groovy.util.slurpersupport.Node' to class 'groovy.util.Node'
Run Code Online (Sandbox Code Playgroud)
如何快速打印出xml表示config?
我只限于Groovy 1.7.0.
-
编辑:我也尝试了以下但收到错误:
services.children().findAll{ it.artifactId.text() == serviceName }.each { config ->
println XmlUtil.serialize(config)
Run Code Online (Sandbox Code Playgroud)
这是打印的内容:
[Fatal Error] :1:1: Content is not allowed in prolog.
ERROR: 'Content is not allowed in prolog.'
<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)
对于一些快速调试,最简单的方法是使用XmlUtil
import groovy.xml.*
def xml="""
<a><b>b</b><c/></a>
"""
def a=new XmlSlurper().parseText(xml)
println XmlUtil.serialize(a)
Run Code Online (Sandbox Code Playgroud)