2012-01-18 3 views
2

XML로 객체를 webservice에 전송해야한다는 요구 사항이 있습니다. 이미 pojo가 있습니다. 이제 Groovy를 사용하여 xml로 변환해야합니다. grails에서 as 키워드를 사용했는데 그루비에서 이것을 수행 할 수있는 동일한 코드는 무엇입니까?"as"키워드를 사용하여 pojo를 xml로 변환하는 방법

예 Grails의 코드 :

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

답변

6

StreamingMarkupBuilder와 함께이 일의 순진한 예는 다음과 같습니다

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 키워드가 실제로 그루비 언어 사양의 일부입니다. 누락 된 부분은 변환을 수행하는 XML 클래스입니다. 이것은 실제로 POJO를 걷고 (아마도 MarkupBuilder을 사용하여) XML을 작성하는 멋진 클래스입니다.

Groovy에는 grails.converters.XML과 같은 내장 클래스가 없으므로 쉽게 만들 수 있습니다. 대신 MarkupBuilder 또는 StreamingMarkupBuilder을 사용하여 수동으로 XML을 작성해야합니다.

이들 중 어느 것도 자동으로 POJO 또는 POGO를 XML로 변환하지 않으므로 수동으로 직접 처리하거나 리플렉션을 사용하여 프로세스를 자동화해야합니다.

나는 grails 변환기를 복사 할 수 있다고 제안하지만 많은 의존성이있을 수 있습니다. 여전히 오픈 소스입니다. 재사용이 가능한 구성 요소가 필요한 경우 출발점이 될 수 있습니다.

관련 문제