Groovy XmlUtil.serialize()抛出一个';prolog'中不允许包含内容;尝试序列化GPathResult时出错
Groovy的(1.7.3)XmlUtil.serialize(GPathResult)方法遇到了一个奇怪的问题。当我使用GPathResult调用它时,它抛出了一个“Content is not allowed in prolog”错误,但是groovy.util.Node序列化很好。下面是我正在尝试的非常简单的Groovy脚本:Groovy XmlUtil.serialize()抛出一个';prolog'中不允许包含内容;尝试序列化GPathResult时出错,xml,groovy,Xml,Groovy,Groovy的(1.7.3)XmlUtil.serialize(GPathResult)方法遇到了一个奇怪的问题。当我使用GPathResult调用它时,它抛出了一个“Content is not allowed in prolog”错误,但是groovy.util.Node序列化很好。下面是我正在尝试的非常简单的Groovy脚本: import groovy.xml.XmlUtil import groovy.xml.StreamingMarkupBuilder def xmlStr = "
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 ) )
import groovy.xml.XmlUtil
导入groovy.xml.StreamingMarkupBuilder
def xmlStr=“”ver=“1.0”>条形图“”
//要漂亮地打印GPathResult--不起作用
def gpr=new XmlSlurper().parseText(xmlStr)
println XmlUtil.serialize(gpr)
println'trying groovy.util.Node'
//要漂亮地打印groovy.util.Node——很有效
def node=new XmlParser().parseText(xmlStr)
println(XmlUtil.serialize(节点))
这是我得到的输出:
[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>
[致命错误]:1:1:prolog中不允许包含内容。
错误:“prolog中不允许有内容。”
正在尝试groovy.util.Node
酒吧
我在MacOSXSnowLeopard上使用Groovy版本:1.7.3JVM:1.6.020
还有其他人遇到过这种情况吗?看起来像是一个bug,Groovy选择了错误的
serialize
方法在XmlUtil
如果我们硬投,它似乎对我有用(对你有用吗?)
我在这里把它添加到了JIRA中:所以希望它能在未来的版本中得到修复,而你不需要演员阵容
[编辑]JIRA现在声明一个修复程序已经进入主干,并且将在1.7.4+中普遍可用。您可以使用它作为Groovy XmlUtil的替代方案。转换工作正常。感谢您的帮助和提交错误报告:)很高兴提供帮助:-)如果这是有效的答案,您能接受吗?干杯,祝你好运!哇,简单看起来不错。我会看一看,我相信它会在未来的项目中派上用场
println XmlUtil.serialize( (groovy.util.slurpersupport.GPathResult)gpr )