2012-03-22 3 views
3

@ResponseBody 및 @XmlElement 마샬링 (JAXB)을 사용하여 많은 XML을 반환하는 시스템이 있습니다.XML 스키마를 사용하여 JAXB에서 마샬링 된 @ResponseBody를 확인하는 방법

생성 된 스키마를 사용하여 결과 XML의 유효성을 검사하는 가장 좋은 방법은 무엇입니까?

아직 요소를 실행하고 테스트해야하지만 XML 스키마 유효성 검사는 두 번째 부분을 매우 쉽게 만듭니다. 를 비 정렬 화하여

SchemaFactory schemaFactory = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI); 
InputStream schemaStream = openMySchemaFileStream(); 
Schema schema = schemaFactory.newSchema(new StreamSource(schemaStream));  
marshaller.setSchema(schema); 
unmarshaller.setSchema(schema); 

유효성 검사 XML 문자열 : JAXB 마샬와 Unmarshaller에 대한

+0

솔루션을 찾았습니까? –

+0

불행히도 없습니다. – mamruoc

답변

1

설정 XSD 스키마

Reader reader = new StringReader(xml); 
StreamSource source = new StreamSource(reader); 
unmarshaller.unmarshal(source, YourJAXBClass.class); 
아무것도하지 않습니다 SAX '의 DefaultHandler에 정렬 화하여

검증 JAXB 객체 :

marshaller.marshal(obj, new DefaultHandler()); 
+0

음, Spring과이 결과를'@ ResponseBody'에 어떻게 연결합니까? – mamruoc

2

스프링을 사용하면 쉽게 사용할 수 있습니다 (Jaxb2Marshalle r) :

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
    <property name="schema" value="file:/some/path/schema.xsd"/> 
</bean> 
+0

나는 스프링에 대해 꽤 새로운데 어떻게 테스트 할 필요가있는'@ ResponseBody'가 어떤 xsd인지 명시해야한다. (컨트롤러는 조합 된 모델을 기반으로 정렬 된 XML을 리턴한다.) – mamruoc

+0

오키,''클래스를 추가하는 대신에 {classToBeBound}를 추가했습니다. http://www.walgemoed.org/2010/12/jaxb2-spring-ws/를 사용했습니다. 그러나 모든 것이 훌륭하게 실행된다는 점에서 심지어 유효하지 않은 xsd는 어떠한 오류 메시지도 표시하지 않습니다. – mamruoc

+0

http://www.ibm.com/developerworks/web/library/wa-restful/ (Listing 4)에서 예제를 확인하십시오. http 마샬링 변환기를 설정하고 위의 마샬 러를 지정하십시오. –

관련 문제