xml命名空间到java,如何建模'选择'?

时间:2009-02-13 12:08:42

标签: java xml namespaces axis2 choice

在java中表示“choice”命名空间标记的最佳方法是什么? 即

<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 个答案:

答案 0 :(得分:1)

我们通常使用jaxb或其他一些绑定机制(在axis2中有几个)将xsd转换为Java对象。那些生成的对象与您所显示的完全相同:即,选项中的所有属性都存在,并且您没有看到任何指示其中只有一个可以存在的内容。如果您要将这些内容翻译回xml,那么只有在您启用验证时才会注意到这一点。如果您意识到不应该在Java中同时设置两个变体,那么选择没有问题 - 结果有时甚至可能是它们都没有进入生成的XML。