我正在尝试使用StreamingMarkupBuilder构建XML文档。我不知道元素的标记名称是什么,直到运行时,所以我试图找到一种方法在StreamingMarkupBuilder.bind()中指定它。我已经看到了如何指定元素属性和值,但不是标记名称。有什么想法吗?
def xmlBuilder = new StreamingMarkupBuilder()
def xmlString = xmlBuilder.bind {
root {
for (MyClass obj : MyClass.list()) {
obj.getTagName(myValue)
}
}
}.toString()
return xmlString
我想要得到的东西:
<root>
<FoundTagName>myValue</FoundTagName>
</root>
修改
这是我最终的结果:
MyClass.list().each { f ->
"$f.tagName"(f.getValue())
}
我认为值得注意的是,在双引号中我使用了属性名而不是方法名。
答案 0 :(得分:1)
你的意思是这样吗?
import groovy.xml.*
def values = [ tim:12, apples:'yum' ]
String xmlString = new StreamingMarkupBuilder().bind {
root {
values.each { k, v ->
"$k"( v )
}
}
}
assert xmlString == '<root><tim>12</tim><apples>yum</apples></root>'
显然,我使用地图作为我的价值观,但你应该能够以类似的方式使用你的课程(无论是什么)...