Groovy XML MarkupBuilder不会创建root <?xml ....?>

iMi*_*MiX 19 xml grails 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')
}
Run Code Online (Sandbox Code Playgroud)

我得到了输出:

<book id='21'>
    <name>bookname</name>
</book>
Run Code Online (Sandbox Code Playgroud)

如何让它生成根xml标签?

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

小智 43

您也可以使用MarkupBuilder添加xml声明:

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


小智 12

您需要添加yourlsef

def xml = new StreamingMarkupBuilder().bind{
        mkp.xmlDeclaration()
        task {
            id(_Id)
            name("clean")
        }
    }
Run Code Online (Sandbox Code Playgroud)