【问题标题】:Ignoring container elements through JAXB customization通过 JAXB 自定义忽略容器元素
【发布时间】:2011-01-25 21:12:00
【问题描述】:

我正在努力解决一个简单的 JAXB 自定义问题。我有这样的架构。 (它实际上是 Bing Maps Web Services 模式的 sn-p)

 <xs:complexType name="GeocodeOptions">
  <xs:sequence>
    <xs:element minOccurs="0" name="Count" nillable="true" type="xs:int" />
    <xs:element minOccurs="0" name="Filters" nillable="true" type="ArrayOfFilterBase" />
  </xs:sequence>
</xs:complexType>
<xs:complexType name="ArrayOfFilterBase">
  <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="FilterBase" nillable="true" type="FilterBase" />
  </xs:sequence>
</xs:complexType>

现在,当我使用 wsimport 生成 java 类时,它会创建如下代码结构:

public class GeocodeOptions implements Serializable {
...
    public ArrayOfFilterBase getFilters() {
    ...
    }

    public void setFilters(ArrayOfFilterBase value) {
    ...
    }
}

public class ArrayOfFilterBase implements Serializable {
...
    public List<FilterBase> getFilterBaseList() {
    ...
    }
}

您注意到 ArrayOfFilterBase 是一个容器类,我想省略它。我想直接在 GeocodeOptions 类中使用 getFilterBaseList() 方法。

是否可以通过 JAXB 自定义来实现?我苦苦寻找它,但找不到解决方案。

感谢您的帮助。

问候 纳比尔·穆赫塔尔

【问题讨论】:

    标签: xml xsd wsdl jaxb jax-ws


    【解决方案1】:

    是的,您可以使用 @XmlElementWrapper 注释省略容器。您的代码应如下所示:

    public class GeocodeOptions implements Serializable {
           @XmlElementWrapper(name = "...")
           @XmlElement(name = "...")
          public List<FilterBase> getFilterBaseList() {
           ...
          }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      相关资源
      最近更新 更多