Вопрос

Как лучше всего представить в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top