我正在编写一些用于修改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)
导致
[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无法告诉我是什么。