Estoy escribiendo un par de scripts para modificar los archivos xml. Los archivos en cuestión usan el elemento xml: lang. Groovy (XmlSlurper) parece estar insertando un espacio de nombre tag0, que no me importaría demasiado, excepto que parece romper el procesamiento posterior con XmlUtil.Groovy XML y el espacio de nombres "xml:"
Un ejemplo:
import groovy.xml.StreamingMarkupBuilder
import groovy.xml.XmlUtil
String source = """<?xml version='1.0' encoding='UTF-8'?>
<root>
<one xml:lang="en">First</one>
<one xml:lang="de">Second</one>
</root>
"""
def root = new XmlSlurper().parseText(source).declareNamespace(xml: "http://www.w3.org/XML/1998/namespace")
println root
String xml = new StreamingMarkupBuilder().bind{
mkp.xmlDeclaration()
out << root
}
println xml
println XmlUtil.serialize(xml)
resultados en
[Fatal Error] :2:44: The value of the attribute "prefix="xmlns",localpart="tag0",rawname="xmlns:tag0"" is invalid. Prefixed namespace bindings may not be empty.
xml: namespace se supone que existe por defecto, y he probado con la adición de .declareNamespace() pero doesn' parece ayudar Siento que me falta algo obvio, pero Google no ha podido decirme qué es.
Desafortunadamente no es tener tal efecto para mí. Obtengo el mismo error exacto que antes. Estoy en Groovy 1.8.6, ¿y tú? –
Acabo de volver a verificar, y tiene razón ... Lo siento ... Eliminaré esto, y volveré a intentarlo si puedo resolverlo ... –
@ErikAckerman Actualicé mi respuesta para mostrar la única solución que he encontrado –