KeyValueXml-Key,ValueをXMLに出力する-
KeyValueXMLとは
次の僕のツイートがキッカケとなって様々な方に実装を提案してもらったちょっとしたプログラミングの問題です。
groovyでパラメータでわたってきたkey,valueをそのままxmlのタグ名とバリューにしたいときってどうやるのがいいんだろう。DOMを使うのがいいのかな? #groovy
Welcome to Twitter - Login or Sign up
この一連の中でid:fumokmmさんがKeyValueXML.groovyとツイートされていたので、この問題のことを僕が勝手にKeyValueXMLと名付けました。
KeyValueXMLの問題を具体的に書くと
[ "key1": "value1", "key2": "value2", "key3": [ "key3-1": "value3-1", "key3-2": "value3-2", ] ]
のようにKey,ValueのValueの中に再帰的にKey,Valueの構造が入っているデータに対して
<key1>value1</key1> <key2>value2</key2> <key3> <key3-1>value3-1</key3-1> <key3-2>value3-2</key3-2> </key3>
のようにKeyをタグ名、Valueを値としたXML形式に変換する。というものです。
Key,Valueは独自のクラスでもMapでもいいですが、順序を保ったまま出力することが要件になります。
KeyValueXMLのまとめ
KeyValueXMLは本人の予想に反して多くのGroovyエキスパートの方達に実装していただけました。
その一連をTogetterにまとめています。
Togetter:GroovyでKey、ValueをXMLにクールに出力する-keyValueXml.groovy- - Togetterまとめ
一番最初にブログにしていただいたid:fumokmmさんのエントリー
GroovyのMarkupBuilderで再起的な構造のXMLを生成する - No Programming, No Life
Togetterの中でも出てきていますが、C#(LINQ)版、Scala版と実装してくださった方達もいらっしゃいました。
C#
C# で Key、Value な コレクションを XML にしてみた - お だ のスペース
http://twitter.com/#!/neuecc/status/49007610317389825
http://bit.ly/dFMPoP 匿名型toXml(ダサい) @kyon_mm
http://twitter.com/#!/fumokmm/status/49052756715114496
よし!できた! コードが泥臭いのはScalaに慣れてないからってことで勘弁して下さい。 https://gist.github.com/877373 http://bit.ly/eeZ0cO #hatena819
Scalaで再帰的な構造のXMLを生成する - North Ground
みなさん本当にありがとうございます!
こんなに多くの方に書いてもらえるとは思いませんでした。
またこの一連のおかげで様々な勉強に結びつきました。
ということで、id:kyon_mmはKeyValueXMLの各言語実装版を非常に心待ちにしております。
ご自分が使える言語でぜひ実装してみてください。そしてもしよろしければTwitterで@kyon_mmまでご一報ください。ヨダレ垂れ流して喜びます。
ブログがある方はブログに書くのもいいと思いますし、gistやideoneのようなWEBサイトを使うのもいいと思います。
Enjoy Our Coding!!