Краткий поиск в Google выглядит так, как будто вы должны использовать «MarkupBuilder», но я этого не понимаю. Похоже, что я могу сделать «как XML», сделав import grails.converters.XML
, но это не дает мне того, чего я хочу.
Я хочу это:
<Thingie>
<someValue>blah</someValue>
<hellaItems>
<Item>
<anotherValue>yaddayadda</anotherValue>
</Item>
<Item>
<anotherValue>different from the first</anotherValue>
</Item>
</hellaItems>
</Thingie>
Я даже не знаю с чего начать ...
@ Стефан, что если я хочу сделать это динамически? Я не думаю, что понимаю, что "строители" вообще могут быть проблемой.
def items = ["yaddayadda","different from the first"]
Обновление: похоже, я уже близко, но может кто-нибудь помочь мне с этой последней частью. Я делаю это:
def items = ["yaddayadda","different from the first"]
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.thingie() {
someValue('blah')
hellaItems(){
items.each{
item(){
anotherValue(it)
}
}
}
}
def xmlString = writer.toString()
println "maybe this will just work"
println xmlString
печать:
maybe this will just work
<thingie>
<someValue>blah</someValue>
<hellaItems>
<item>
<anotherValue />
</item>
<item>
<anotherValue />
</item>
</hellaItems>
</thingie>
Почему нет моих anotherValue
?
ОБНОВЛЕНИЕ: решено с помощью "tmpHolder" ниже, однако у Билла есть лучший синтаксис.
def items = ["yaddayadda","different from the first"]
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.thingie() {
someValue('blah')
hellaItems(){
items.each{
def tmpHolder = it
item(){
anotherValue(tmpHolder)
}
}
}
}
def xmlString = writer.toString()
println "maybe this will just work"
println xmlString