2012-01-18 3 views
2

xmlとしてWebサービスにオブジェクトを送信する必要があります。私はすでにpojoを持っているので、Groovyを使ってxmlに変換する必要があります。 Grailsでasキーワードを使用しましたが、Groovyでこれを行うための同等のコードは何ですか?"as"キーワードを使用してpojoをxmlに変換する方法

例のGrailsコード:

import grails.converters.* 
render Airport.findByIata(params.iata) as XML 

答えて

6

素朴な例は次のようになります。

印刷する必要があります
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> 
1

asキーワードが実際にGroovyの言語仕様の一部です。あなたが欠けている部分は、変換を行うXMLクラスです。これは実際にPOJOを歩き、XMLを書く(おそらくMarkupBuilderを使用している)派手なクラスです。

Groovyには、grails.converters.XMLのような組み込みクラスがなく、とても簡単です。代わりに、MarkupBuilderまたはStreamingMarkupBuilderを使用して手動でXMLを構築する必要があります。

これらのどちらも自動的にPOJOまたはPOGOをXMLに変換しません。手動でこれを処理するか、リフレクションを使用してプロセスを自動化する必要があります。

私はあなたがgrailsのコンバータをコピーすることができるかもしれないと示唆したいと思いますが、多くの依存関係があるかもしれません。それでも、これはオープンソースなので、再利用可能なコンポーネントが必要な場合は出発点になるかもしれません。 StreamingMarkupBuilderでこれを行うの

関連する問題