JAXB Schemagen(v.7.0.450.18):更改XmlElement名称和XmlType(propOrder = {...})

时间:2014-05-11 15:54:46

标签: java xml jaxb xmltype schemagen

我正在与使用schemagen的autmated生成的XSD文件进行一些努力。 首先,我必须告诉我,我正在大学的一个项目工作,不能改变我的java类的代码,但注释...

所以,基本上我要做的就是重命名我的一些XmlElements并且必须将它们带入某个Order。我想,我可以解决这个问题:

@XmlType(propOrder = { "email", "id", "name", "publication" })
public class Author {
   ...
   private List<Publication> publications = new LinkedList<>();
   ...
   @XmlElement(name = "publication")
   public List<Publication> getPublications() {
    return publications;
}
   public void setPublications(List<Publication> publications) {
    this.publications = publications;
} 

XmlAccessorType的默认值为@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)。但是当我尝试使用schemagen(在Eclipse和命令行中)生成XML Schema时,我收到以下错误:

Property publications is present but not specified in @XmlType.propOrder

Property publication appears in @XmlType.propOrder, but no such property exists. Maybe you meant publications?

所以,对我而言,这听起来有点矛盾,因为似乎schemagen完全无视我指定的内容......任何人都可以告诉我问题在哪里?

非常感谢!

1 个答案:

答案 0 :(得分:0)

propOrder基于映射的字段/属性名称,而不是XML属性或元素的名称。