XML 네임 스페이스에서 Java, '선택'을 모델링하는 방법?
-
23-08-2019 - |
문제
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로 만들지 않아도 될 수도 있습니다.
제휴하지 않습니다 StackOverflow