2010-05-27 6 views
2

나는 3 개 XSD 파일이 있습니다 모두 a.xsd로 가져 JAXB를 사용하여 공유 객체를 생성 할 수 있습니까?

  • shared.xsd
  • shared.xsd을 b.xsd

    • a.xsd 및 사용 b.xsd

      <xs:import schemaLocation="shared.xsd"/> 
      

      shared.xsd는

      정의
      <xs:element name="item"> 
      <xs:complexType> .... 
      

      xjc a.xsd를 사용하여 Java 코드를 생성하고 b.xsd가 다른 패키지로 생성되고 각 패키지에서 항목에 대해 별도의 Java 클래스가 생성됩니다. item에 대해 하나의 공유 클래스를 가지고 a와 b를 사용하는 것이 어떻게 가능합니까?

  • 답변

    0

    생성 된 파일이 들어있는 패키지를 무시할 수 있습니다. 이렇게하면 두 공유 객체가 같은 위치에 있어야합니다.

    xjc -p com.test a.xsd b.xsd shared.xsd 
    

    나는 그것이 당신이 찾고있는 것이라고 생각합니다.

    +0

    와우 덕분에 작동합니다. 항상 실행했습니다. xjc a.xsd xjc b.xsd xjc shared.xsd 그런 식으로 작동하지 않았습니다. 이 솔루션에는 단 하나의 문제 만 있습니다. a.xsd와 b.xsd의 최상위 요소는 모두 동일한 것으로 (내 경우 "요청") 호출되며 불행히도 변경할 수 없습니다. 내 솔루션으로 각 xsd가 다른 패키지로 컴파일 되었기 때문에 문제가되지 않았지만 이제는 같은 패키지에 같은 이름의 두 요소가 충돌합니다. 거기에 어떤 해결책이 있습니까? –

    +0

    @Peter Szanto, 바인딩 구성 파일 (.xjb 파일)을 사용하여 충돌을 해결할 수 있어야합니다. –

    +0

    다시 한번 감사드립니다. 항상 새로운 것을 배우는 것이 놀랍습니다. 다만 공공의 이익을 위해 내 XSD로 아래 인라인 xjb 선언을 추가 \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t 그리고 xml에서 요청하도록 바인딩 된 EmailauthenticationRequest.java를 생성합니다. –

    0

    JAXB이 패키지를 만들기 위해 하나의 스키마 파일에서 @Chris Dail이 말한 것 또는 a.xsdb.xsd을 병합하십시오.

    관련 문제