2010-12-16 5 views
1

XML을 매핑 할 때 복잡한 유형, 따라서 여러 최상위 클래스 또는 익명 유형, 따라서 내부 클래스의 계층 구조를 갖는 것이 더 좋습니까?jaxb/xsd 매핑에서 복합 유형 또는 익명 유형을 사용해야합니다

길게 이야기 : 나는 그것을 좋아하는 방식으로 스키마를 가지는 것은 행운이다. 나는 이클립스와 XJC를 사용하여 두 가지 접근법을 시도해 보았고 복잡한 유형을 가진 스키마에서 생성 된 클래스가 unmarshalling에 대해 설명 할 수없는 ClassCastException을 발생 시킨다는 것을 발견했다 (JAXB에 대한 잘못은 있지만 JAXB에 대한 경험이 부족한 것 같다. 익명 형식/내부 클래스 접근 방식은 잘 작동하지만 염려와 재사용을 구분하여 "냄새 나는"것처럼 보입니다.

보너스 질문 : 경험이없는 JAXB/XSD 사용자가 자주 WRT 복합 유형 매핑을 작성하여 비 정렬 화시 ClassCastException이 발생할 가능성이있는 명백한 실수가 있습니까?

감사합니다.

답변

1

가능한 경우 사람들이 자신의 개체 모델을 디자인 한 다음 JAXB 주석을 추가하여 XML에 매핑하는 것이 좋습니다. XML 스키마에서 객체 모델을 생성하는 JAXB의 기능은 편리한 메커니즘입니다.

클래스 생성을 사용하려면 두 가지 스타일의 스키마가 모두 유효해야합니다.

WRT ClassCastException, 그들은 보통 실제 클래스와 예상 클래스를 출력합니다. 이 문제를 디버깅하려면 오류가 관련된 속성의 주석을보고, 실제 비 정렬 화 된 형식의 형식이 ObjectFactory에서 @XmlRootElement 또는 @XmlElementDecl 인 경우 필요합니다.

XML이 스키마에 유효하지 않을 수도 있습니다. 검증을 유효하게하기 위해서 비 정렬 화 된 Schema의 인스턴스를 설정해보십시오.

+0

매우 유익하고 자세한 감사합니다. XSD와 XML은 모두 유효합니다. 곧 ClassCastException 문제에 대해 자세히 살펴보십시오. 불행히도 추가 정보가 제공되지 않는 테스트 케이스에서만 경험했습니다. – kostja

관련 문제