2013-05-27 36 views
18

我使用XML MarkupBuilder的生成XML文件Groovy的XML MarkupBuilder的不創建根<?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') 
} 

,我得到的輸出:

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

我怎樣才能使它產生的根XML標籤以及?

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

回答

40

您可以添加的MarkupBuilder XML聲明過:

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

所以我猜我做的不是正確的方法: xmlObj.write(「<?xml version = \」1.0 \「encoding = \」UTF-8 \「?> \ n」) – iMiX

11

您需要添加它yourlsef

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

要精心,'mkp'可在封建設者訪問[ MarkupBuilderHelper](http://groovy.codehaus.org/api/groovy/xml/MarkupBuilderHelper.html),其中包含'xmlDeclaration'方法。 –