2013-05-27 3 views
18

Sto usando MarkupBuilder XML per generare file XMLGroovy XML MarkupBuilder non crea radice <?xml .... ?>

import groovy.xml.StreamingMarkupBuilder 
import groovy.xml.MarkupBuilder 
import org.custommonkey.xmlunit.* 

.... 

def xmlObj = new StringWriter() 
def xml = new MarkupBuilder(xmlObj) 
xml.book("id":21){ 
    name('bookname') 
} 

e ottengo l'output:

<book id='21'> 
    <name>bookname</name> 
</book> 

come posso farlo generare il tag root xml anche?

<?xml version="1.0" encoding="utf-8"?> 

risposta

40

È possibile aggiungere dichiarazione XML con MarkupBuilder troppo:

def xml = new MarkupBuilder(xmlObj) 
xml.mkp.xmlDeclaration(version: "1.0", encoding: "utf-8") 
xml.book("id":21){ 
    name('bookname') 
} 
+0

Quindi immagino che quello che ho fatto non sia il modo giusto per farlo: xmlObj.write (" \ N") – iMiX

11

È necessario aggiungerlo yourlsef

def xml = new StreamingMarkupBuilder().bind{ 
     mkp.xmlDeclaration() 
     task { 
      id(_Id) 
      name("clean") 
     } 
    } 
+0

Elaborare, 'mkp' è disponibile nelle chiusure costruttore di accedere a una [ MarkupBuilderHelper] (http://groovy.codehaus.org/api/groovy/xml/MarkupBuilderHelper.html), che include il metodo 'xmlDeclaration'. –