1

在java中表示“选择”命名空间标签的最佳方式是什么?IE。

<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 公开服务,是否需要实现一些自定义消息接收器?

4

1 回答 1

1

我们通常使用 jaxb 或其他一些绑定机制(在 axis2 中有几个)将 xsd 转换为 Java 对象。这些生成的对象与您所展示的完全一样:也就是说,选择中的所有属性都在那里,您看不到任何表明只能存在其中一个的东西。如果您将这些内容翻译回 xml,则只有在打开验证时才会注意到这一点。如果您知道不应该在 Java 中同时设置两个变体,那么选择就没有问题 - 结果有时甚至可能是它们都没有进入生成的 XML。

于 2009-02-13T12:27:37.910 回答