문제

Java에서 "선택"네임 스페이스 태그를 대표하는 가장 좋은 방법은 무엇입니까? 즉.

<xs:complexType name="MyType">
  <xs:sequence>
    <!-- common elements here -->
    <xs:element type="xs:string" name="name" ... />
  </xs:sequence>
  <xs:choice>
    <xs:element name="stringValue" type="xs:string"></xs:element>
    <xs:element name="intValue" type="xs:int"></xs:element>
  </xs:choice>
</xs:complexType>

Java에서 이것을 어떻게 모델링합니까? 나는 다음과 같은 것에 대해 생각하고 있었다.

public class MyType
  String name;

  String stringValue;
  int intValue;
...

그러나 이것이 최선의 방법이 아닌지 확실하지 않습니까? 또한 해당 유형을 사용하는 Axis2로 서비스를 노출하려면 사용자 정의 메시지 수신기를 구현해야합니까?

도움이 되었습니까?

해결책

우리는 일반적으로 XSD를 JAXB 또는 다른 바인딩 메커니즘 (Axis2에 몇 가지)을 사용하여 XSD를 Java 객체로 변환합니다. 이들은 당신이 보여준 것처럼 똑같은 물건을 생성합니다. 즉, 선택의 모든 속성은 거기에 있으며 그중 하나만 존재할 수 있음을 나타내는 것은 없습니다. 물건을 XML로 다시 번역하는 경우 유효성 검사를 켜는 경우에만 알 수 있습니다. Java에서 두 변형을 동시에 동시에 설정해서는 안된다는 것을 알고 있다면 선택에 아무런 문제가 없습니다. 결과는 때때로 생성 된 XML로 만들지 않아도 될 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top