我正在将XML文档从一个名称空间(和架构)转换为另一个名称空间。 JDOM允许我们调用Element.setNamespace()(它也负责元素的属性)。我用Groovy Node看到的最接近的是
myNode.name = new QName("http://my/new/namespace", myNode.name.localPart)
但是我不相信这是最好的方式 - 特别是它没有关注属性。 Node甚至可以实现这一点吗?如果是这样,那么这种惯用方法是什么?
答案 0 :(得分:0)
我想不出一种方法......你可以使用JDOM(转换为Groovy脚本from this example)
@Grab(group='org.jdom', module='jdom', version='1.1')
import org.jdom.*
import org.jdom.input.*
import org.jdom.output.*
new SAXBuilder().build( new URL( 'http://cs.au.dk/~amoeller/XML/xml/recipes.xml' ) ).with { document ->
def newDoc = new Element( 'collection' ).with { element ->
addContent document.rootElement.getChild( 'recipe', Namespace.getNamespace( 'http://recipes.org' ) ).detach()
new Document( element )
}
new XMLOutputter().output( newDoc, System.out )
}