【问题标题】:jaxb xjc creating List< Objects > instead of List< String >jaxb xjc 创建 List<Objects> 而不是 List<String>
【发布时间】:2013-02-08 15:47:02
【问题描述】:

我有一个这样的xsd -

<xs:element name="teachers" minOccurs="0">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="teacher" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

当我使用 XJC 生成类绑定时,我看到老师的类型是 - List 而不是 List

protected List<Object> teacher;
public List<Object> getTeacher() {
        if (teacher == null) {
            teacher = new ArrayList<Object>();
        }
        return this.teacher;
    }

如何使它生成字符串列表而不是对象?任何帮助表示赞赏。

更新:使用 'vamsilp' 提供的解决方案 - 删除“teachers”元素上的“minOccurs”后,它工作得很好!Jersey 从此代码自动生成 XSD:

@XmlElementWrapper(name = "teachers")
@XmlElement(name = "teacher")
public StringSet getTeachers() {
    return getData().getTeacherss();

我不确定如何删除“minOccurs”属性。我需要修改我的代码以忽略它吗?

【问题讨论】:

    标签: xsd jaxb schema bind xjc


    【解决方案1】:

    首先,我只是不明白你是如何生成类的,而是它应该向你显示一个错误,说“'minOccurs' 不能出现在元素'元素'中”,因为你已经对你的全局/根元素声明了 minOccur 约束“教师”。你不应该这样做,请参考this。尝试通过删除这个应该起作用的约束来重新生成您的 JAXB 类

    【讨论】:

    • 非常感谢!奇怪,但我能够生成类,但它们格式不正确。您知道如何忽略自动生成的 XSD 中的“minOccurs”元素吗? (请查看我的更新)
    • @keerthi:自动生成的 XSD 是什么意思?我猜你的意思是你从 XSD 生成的自动生成的类?您还想从 XSD 中删除 minOccurs 约束吗?如果是这种情况,请继续删除该约束并重新生成类,那应该可以正常工作。如果不是,请澄清?
    • 我已经通过手动删除“minOccurs”属性验证了生成的类,它工作正常。但是 XSD 是由 Jersey 为我们的 REST 应用程序生成的。我复制了(在我的原始描述中)生成此 XSD 的部分代码。
    • @keerthi:如果您可以在 Jersey 标签下发布一个新问题,您的问题可能会受到更多关注
    猜你喜欢
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2014-02-23
    • 2020-09-18
    • 1970-01-01
    相关资源
    最近更新 更多