I'm converting an XML document from one namespace (and schema) to another. JDOM allows us to call Element.setNamespace() (which also takes care of the attributes for the element). The closest I can see with a Groovy Node is
myNode.name = new QName("http://开发者_如何学编程my/new/namespace", myNode.name.localPart)
But I'm not confident that this is the best way - in particular, it doesn't take care of the attributes. Is this even possible with Node? And if so, what's the idiomatic way to do it?
I can't think of a way off-hand... You could just use JDOM though (converted to a Groovy script 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 )
}
加载中,请稍侯......
精彩评论