【问题标题】:xml namespace to java, how to model 'choice'?xml命名空间到java,如何建模“选择”?
【发布时间】:2010-10-07 10:31:43
【问题描述】:

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

【问题讨论】:

    标签: java xml namespaces axis2 choice


    【解决方案1】:

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

    【讨论】:

    • 这种方式服务器端似乎可以工作,但是有一个问题:默认的axis2序列化程序还在响应中设置了空元素设置xsi:nil="true"(即。4<..>
    • 听起来像是你应该报告的错误。这肯定是不对的,我在我们使用的东西中没有看到这种行为。
    猜你喜欢
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2013-02-03
    • 1970-01-01
    相关资源
    最近更新 更多