【发布时间】:2012-03-23 20:44:54
【问题描述】:
我正在编写几个脚本来修改 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 无法告诉我它是什么。
【问题讨论】:
标签: groovy xml-serialization xml-parsing