2009-12-07 4 views
2

(désolé pour le titre bizarre ...)Créer xml groovy avec une « enveloppe » - ajouter des nœuds au milieu d'une structure xml

Je veux utiliser le système d'adjuvant groovy pour créer un xml. Mon problème est que je veux avoir une sorte d'enveloppe autour de laquelle l'utilisateur ne doit pas se soucier.

Un exemple:

def builder = new groovy.xml.MarkupBuilder() 
builder.foo() { 
    bar('hello') 
} 

cela devrait créer permet de dire

<Something id:'123'> 
    <AnyInfo> 
     <foo> 
      <bar>hello</bar> 
     </foo> 
    </AnyInfo> 
</Something> 

pour qu'il y ait une structure XML en arrière-plan dans lequel l'utilisateur peut ajouter sa structure XML à un noeud prédéfini (dans l'exemple 'AnyInfo')

Comment le constructeur doit ressembler, que je peux ajouter des nœuds avec le constructeur de marque (ou tout autre constructeur) quelque part au milieu de la enveloppe?

J'espère que c'était en quelque sorte compréhensible?!

MERCI Marty

Répondre

6

Vous pouvez le faire facilement avec des fermetures. Créez une fermeture pour créer le wrapper. Vous pouvez ensuite transmettre dynamiquement votre fermeture qui crée le contenu réel. Exemple:

def writer = new StringWriter() 
def builder = new groovy.xml.MarkupBuilder(writer) 

def createWrapper = {Closure c-> 
    builder.Something(id:123) { 
     AnyInfo() { 
      c() 
     } 
    } 
} 

createWrapper { 
    builder.foo() { 
     bar('hello') 
    } 
} 

println writer.toString() 

Le résultat créé par ceci est l'exemple XML que vous recherchiez.

+0

super - facile et soigné ... merci :) – Marty

Questions connexes