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

You mean like this?

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

Obviously, I'm using a map for my values, but you should be able to use your class (whatever it is) in a similar fashion...

于 2013-04-12T15:00:53.280 に答える