xmlとしてWebサービスにオブジェクトを送信する必要があります。私はすでにpojoを持っているので、Groovyを使ってxmlに変換する必要があります。 Grailsでas
キーワードを使用しましたが、Groovyでこれを行うための同等のコードは何ですか?"as"キーワードを使用してpojoをxmlに変換する方法
例のGrailsコード:
import grails.converters.*
render Airport.findByIata(params.iata) as XML
xmlとしてWebサービスにオブジェクトを送信する必要があります。私はすでにpojoを持っているので、Groovyを使ってxmlに変換する必要があります。 Grailsでas
キーワードを使用しましたが、Groovyでこれを行うための同等のコードは何ですか?"as"キーワードを使用してpojoをxmlに変換する方法
例のGrailsコード:
import grails.converters.*
render Airport.findByIata(params.iata) as XML
素朴な例は次のようになります。
印刷する必要がありますclass Airport {
String name
String code
int id
}
Writable pogoToXml(object) {
new groovy.xml.StreamingMarkupBuilder().bind {
"${object.getClass().name}" {
object.getClass().declaredFields.grep { !it.synthetic }.name.each { n ->
"$n"(object."$n")
}
}
}
}
println pogoToXml(new Airport(name:'Manchester', code:'MAN', id:1))
:
<Airport><name>Manchester</name><code>MAN</code><id>1</id></Airport>
as
キーワードが実際にGroovyの言語仕様の一部です。あなたが欠けている部分は、変換を行うXMLクラスです。これは実際にPOJOを歩き、XMLを書く(おそらくMarkupBuilder
を使用している)派手なクラスです。
Groovyには、grails.converters.XML
のような組み込みクラスがなく、とても簡単です。代わりに、MarkupBuilder
またはStreamingMarkupBuilder
を使用して手動でXMLを構築する必要があります。
これらのどちらも自動的にPOJOまたはPOGOをXMLに変換しません。手動でこれを処理するか、リフレクションを使用してプロセスを自動化する必要があります。
私はあなたがgrailsのコンバータをコピーすることができるかもしれないと示唆したいと思いますが、多くの依存関係があるかもしれません。それでも、これはオープンソースなので、再利用可能なコンポーネントが必要な場合は出発点になるかもしれません。 StreamingMarkupBuilder
でこれを行うの