Frage

Was ist der beste Weg, um einen „Wahl“ Namespace-Tag in Java zu repräsentieren? dh.

<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>

Wie modelliere ich das in Java? Ich dachte an so etwas wie:

public class MyType
  String name;

  String stringValue;
  int intValue;
...

, aber das ist sicher nicht der beste Weg, oder irre ich mich? Plus, wenn ich Dienste mit Axis2 verfügbar machen möchten, die diese Art verwenden, muss ich einige benutzerdefinierte Nachrichtenempfänger implementieren?

War es hilfreich?

Lösung

Wir übersetzen in der Regel die XSD auf Java-Objekte mit jaxb oder einem anderen Bindungsmechanismus (von denen Sie in axis2 mehrere haben). Diejenigen erzeugen Objekte genau wie Sie gezeigt haben: das heißt, alle Attribute in den Entscheidungen gibt es und Sie nichts sehen, dass, dass nur einer von ihnen zeigt, vorhanden sein können. Wenn Sie das Zeug wieder in XML übersetzen, würde dies nur bemerkt, wenn Sie auf die Validierung wechseln. Es gibt kein Problem mit Entscheidungen, wenn Sie sich bewusst, dass Sie nicht beide in Java-Varianten gleichzeitig setzen soll -. Das Ergebnis kann manchmal sogar sein, dass keiner von ihnen in die generierte XML macht

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top