Я пишу несколько сценариев для модификации XML-файлов.В рассматриваемых файлах используется элемент xml: lang.Groovy (XmlSlurper), похоже, вставляет пространство имен tag0, что, я бы не возражал, слишком сильно, за исключением того, что оно прерывает последующую обработку с помощью XmlUtil.
Пример:
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)
результатыin
[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: существует по умолчанию, и я попытался добавить его с помощью .declareNamespace (), но, похоже, это не помогло.Я чувствую, что упускаю что-то очевидное, но Google не смог сказать мне, что это такое.