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 в объекты Java с помощью jaxb или какого-либо другого механизма привязки (которых у вас несколько в axis2).Они генерируют объекты точно так же, как вы показали:то есть все атрибуты выбора присутствуют, и вы не видите ничего, что указывало бы на то, что может присутствовать только один из них.Если вы переводите материал обратно в XML, это будет заметно только в том случае, если вы включите проверку.С выбором проблем не возникнет, если вы знаете, что не следует устанавливать оба варианта одновременно в Java — иногда в результате ни один из них не попадает в сгенерированный XML.