我在 Groovy 的 (1.7.3) XmlUtil.serialize( GPathResult ) 方法中遇到了一个奇怪的问题。当我使用 GPathResult 调用它时,它会抛出“序言中不允许内容”错误,但 groovy.util.Node 序列化得很好。这是我正在尝试的非常简单的 Groovy 脚本:
import groovy.xml.XmlUtil
import groovy.xml.StreamingMarkupBuilder
def xmlStr = """<?xml version="1.0" encoding="UTF-8"?><stuff>ver="1.0"><properties><foo>bar</foo></properties></stuff>"""
//to pretty print GPathResult -- NOT WORKING
def gpr = new XmlSlurper().parseText( xmlStr )
println XmlUtil.serialize( gpr )
println 'trying groovy.util.Node'
//to pretty print groovy.util.Node -- WORKS
def node = new XmlParser().parseText( xmlStr )
println( XmlUtil.serialize( node ) )
这是我得到的输出:
[Fatal Error] :1:1: Content is not allowed in prolog.
ERROR: 'Content is not allowed in prolog.'
<?xml version="1.0" encoding="UTF-8"?>
trying groovy.util.Node
<?xml version="1.0" encoding="UTF-8"?>
<stuff ver="1.0">
<properties>
<foo>bar</foo>
</properties>
</stuff>
我在 Mac OS X Snow Leopard 上使用 Groovy 版本:1.7.3 JVM:1.6.0_20
还有其他人遇到过这种情况吗?
看起来像是 Groovy 选择错误的错误serialize
执行的方法XmlUtil
如果我们硬铸它,它似乎对我有用(对你有用吗?)
println XmlUtil.serialize( (groovy.util.slurpersupport.GPathResult)gpr )
我已将其添加到 JIRA 中:http://jira.codehaus.org/browse/GROOVY-4285 http://jira.codehaus.org/browse/GROOVY-4285所以希望它会在未来的版本中得到修复,并且你不需要演员阵容
[编辑] JIRA 现在声明修复已进入主干,并将在 1.7.4+ 中普遍可用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)