gpt4 book ai didi

xml - 使用Groovy标记构建器语法对Grails中的嵌套元素进行XML编码

转载 作者:行者123 更新时间:2023-12-02 14:41:39 25 4
gpt4 key购买 nike

Grails:v2.5.0

如何生成包含没有属性的嵌套元素的XML?

这是我想要的输出:

<?xml version="1.0" encoding="UTF-8"?>
<list>
<book>
<title>Title</title>
<authors>
<author>
<fname>First Name</fname>
<lname>Last Name</lname>
</author>
</authors>
</book>
</list>

使用以下编码器...
// imports...

class BootStrap {

def init = { servletContext ->
XML.registerObjectMarshaller(Book) { Book book, converter ->
converter.build {
title book.title
authors {
for (a in book.authors) {
author {
fname a.fname
lname a.lname
}
}
}
}
}
}
}

... authors元素未包含在输出中:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<book>
<title>Title</title>
</book>
</list>

但是,当同时向 authorsauthor元素添加属性时...
// imports...

class BootStrap {

def init = { servletContext ->
XML.registerObjectMarshaller(Book) { Book book, converter ->
converter.build {
title book.title
authors(bla: 'bla') {
for (a in book.authors) {
author(bla: 'bla') {
fname a.fname
lname a.lname
}
}
}
}
}
}
}

...元素包含在输出中:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<book>
<title>Title</title>
<authors bla="bla">
<author bla="bla">
<fname>First Name</fname>
<lname>Last Name</lname>
</author>
</authors>
</book>
</list>

有人可以指出我正确的方向吗?

谢谢!

最佳答案

找到了解决方案:添加括号和一个空列表。

这是代码:

// imports...

class BootStrap {

def init = { servletContext ->
XML.registerObjectMarshaller(Book) { Book book, converter ->
converter.build {
title book.title
authors([]) {
for (a in book.authors) {
author([]) {
fname a.fname
lname a.lname
}
}
}
}
}
}
}

关于xml - 使用Groovy标记构建器语法对Grails中的嵌套元素进行XML编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31393260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com