Groovy XML MarkupBuilder无法创建根元素 <?xml .... ?>。

20

我正在使用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"?>
2个回答

48

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

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

所以我猜想我的做法并不正确: xmlObj.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n") - iMiX

12

你需要自己添加它。

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

详细来说,mkp 可以在构建器闭包中使用,以访问 MarkupBuilderHelper,其中包括 xmlDeclaration 方法。 - Dave Newton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接