Как установить другое значение для пространства имен объекта Groovy Node? - PullRequest
0 голосов
/ 25 июля 2011

Я конвертирую XML-документ из одного пространства имен (и схемы) в другое.JDOM позволяет нам вызывать Element.setNamespace () (который также заботится об атрибутах для элемента).Самое близкое, что я могу увидеть с узлом Groovy, это

myNode.name = new QName("http://my/new/namespace", myNode.name.localPart)

Но я не уверен, что это лучший способ - в частности, он не заботится об атрибутах.Это возможно даже с Node?И если да, то какой идиоматический способ сделать это?

1 Ответ

0 голосов
/ 26 июля 2011

Я не могу придумать выход из положения ... Хотя вы могли бы просто использовать JDOM (преобразованный в скрипт Groovy из этого примера )

@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 )
}
...