GroovyでKey、ValueをXMLにクールに出力する-keyValueXml.groovy-
groovyでパラメータでわたってきたkey,valueをそのままxmlのタグ名とバリューにしたいときってどうやるのがいいんだろう。DOMを使うのがいいのかな? #groovy
2011-03-15 01:23:50@nobeans まだそこまで調べていないんですけど、MarkupBuilderで変数名をそのままタグ名とかに使えるのでしょうか?hoge(key, value){//MarkupBuilderの処理}でkey(value)みたいな。今ひとつわかっていないです。
2011-03-15 01:27:37@nobeans なるほど!!!すっかりGStringのことを忘れていました!そっかぁ。GStringの機能を考えるとかなり自由に使えるんですね。。。
2011-03-15 01:33:46GStringはだいたい正規表現書きやすいくらいにしか思っていませんでした。ごめんなさい。"$hoge"とかかなり便利なんですよね>< #groovy
2011-03-15 01:35:39展開演算子じゃないですか?もしくは#collect RT @kyon_mm: groovyでパラメータでわたってきたkey,valueをそのままxmlのタグ名とバリューにしたいときってどうやるのがいいんだろう。DOMを使うのがいいのかな? #groovy
2011-03-15 07:20:29@kyon_mm なるほど、key,valueを[key:value]使ってないんですね、あと再起的になってるのでcollectAllとかを使えばいけそうですがいまちょろっとやったらいけなかったのでw あとでじっくり見ます。
2011-03-15 22:01:48@fumokmm おおう!!!ありがとうございます>< [key:value]はHashMapだから順序が無視されるので適当なクラスのリストにしてみました。何が一般的かよくわかってないですorz
2011-03-15 22:07:44@kyon_mm このコードってGroovy限定で良いんだっけ? まず突っ込むところとしては、list と expect はdef定義した方が良いよ<GroovyLintで文法エラーになる
2011-03-15 22:13:13@kimukou_26 ですです。あ、defすっかり忘れてました>< もともとclassだったものをScriptに落としたので。。。orz
2011-03-15 22:15:10@kyon_mm あと違和感があったのが 「"${it.key}"(it.value)」=>「"${it.key}(${it.value})"」の方が良いかも。あとこういうのって NodeBuilder で書くのが普通のような どうなんでしょう? @fumokmm さん?
2011-03-15 22:41:50@kimukou_26 @kyon_mm 簡単にいけると思ったんですがなかなかいけないみたい。たぶん再起的に繰り返すeachAllみたいなクロージャメソッドをListに追加して、構築時に使うといいかも。むしろこれ、Jsonじゃだめなんでしたっけ?(笑)
2011-03-15 22:55:29RT @kimukou_26: @kyon_mm 「"${it.key}"(it.value)」はMarkupBuilder用なんですよね?
2011-03-15 22:58:35@fumokmm コード読んでてListを使わなければいけない必要性が分からない<苦笑。かえってコードが難しくなっている気がしますよ~ @kyon_mm くん! RT 「"${it.key}"(it.value)」はMarkupBuilder用なんですよね?
2011-03-15 23:03:53@fumokmm @kimukou_26 JSONを実際に触ったことがないのであれですが、今回の要件としてはXMLで返してほしいってことだったので、とりあえずMarkupBuilderでやってみました。この再帰のところが面倒だったので僕も最初はDOMとかNODEかなぁとw
2011-03-15 23:16:29@kimukou_26 @fumokmm Listにしている理由はデータベースから取得する項目を使うのでそこで順にならんでいる方がいいってことで取得したデータを定義順にならべた上でXMLにする必要があったからです。Listである必要はないのですが順序が重要です。
2011-03-15 23:18:22