0

我正在尝试使用 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())
}

我认为值得注意的是,在双引号中我使用了属性名称而不是方法名称。

4

1 回答 1

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>'

显然,我正在使用地图作为我的价值观,但您应该能够以类似的方式使用您的课程(无论是什么)......

于 2013-04-12T15:00:53.280 回答