XML пространство имен в Java, как смоделировать «выбор»? - PullRequest
1 голос
/ 13 февраля 2009

Каков наилучший способ представить в java тег «name» пространства имен? то есть.

<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, которые используют этот тип, нужно ли мне реализовать какой-нибудь специальный приемник сообщений?

1 Ответ

1 голос
/ 13 февраля 2009

Обычно мы переводим xsd в объекты Java с помощью jaxb или другого механизма связывания (которого у вас несколько в axis2). Они генерируют объекты точно так же, как вы показали: то есть все атрибуты в выборе есть, и вы не видите ничего, что указывало бы, что только один из них может присутствовать. Если вы переводите материал обратно в xml, это будет замечено, только если вы включите проверку. Нет проблем с выбором, если вы знаете, что не следует устанавливать оба варианта одновременно в Java - иногда может даже получиться, что ни один из них не попадет в сгенерированный XML.

...