2010-06-30 28 views
5

He encontrado un problema extraño con el método XmlUtil.serialize (GPathResult) de Groovy (1.7.3). Lanza un error de 'El contenido no está permitido en Prolog' cuando lo llamo con un GPathResult, pero Groovy.util.Node está serializando muy bien. Aquí está el script muy simple maravilloso que estoy tratando:Groovy XmlUtil.serialze() lanza un error de "Contenido no permitido en prólogo" al intentar serializar un GPathResult

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)) 

Ésta es la salida me sale:

[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> 

estoy usando Groovy Versión: 1.7.3 JVM: 1.6.0_20 en Mac OS X Snow Leopard

¿Alguien más está experimentando esto?

Respuesta

4

Parece que un error en el maravilloso es seleccionar el serialize método equivocado para ejecutar en XmlUtil

Si dura fundido a ella, parece que funciona para mí (lo hace por usted?)

println XmlUtil.serialize((groovy.util.slurpersupport.GPathResult)gpr) 

Lo he agregado al JIRA aquí: http://jira.codehaus.org/browse/GROOVY-4285 Así que con suerte, se solucionará en versiones futuras, y no necesitará el molde

[editar] El JIRA ahora indica que se ha corregido un problema en el enlace troncal. y estará generalmente disponible en 1.7.4+

+0

el casting funcionó. Gracias por la ayuda y por enviar el informe de error :) – strohs

+0

Me complace ayudar :-) Si esta fue la respuesta válida, ¿puedes aceptarlo así? Saludos, y buena suerte! –

+0

simplemente una actualización, esto de hecho fue corregido en maravilloso 1.7.4 – strohs

-1

Puede usar Simple como alternativa a Groovy XmlUtil.

+0

wow Simple se ve bien. Voy a echar un vistazo, estoy seguro de que será útil en futuros proyectos – strohs

Cuestiones relacionadas