JAXB和带有元素列表的属性排序

时间:2013-12-20 16:35:09

标签: java xml jaxb

我正在使用JAXB来解组xml文件。 这是我的元素功能代码,但我想在元素功能中有一个特殊的元素顺序,比如这个

<feature>
  <name>2D Polynomial Approximation of Log of ConstantQ</name>
  <active>false</active>
  <attribute>50</attribute>
  <attribute>20</attribute>
  <attribute>10</attribute>
  <attribute>10</attribute>
</feature>

我检查了@XmlType(propOrder = {})的一些教程,但我找不到一种方法来订购像元素列表这样的元素列表。

这是我的代码

@XmlRootElement(name = "feature")
@XmlType(propOrder = {"name", "active","attribute"})
public class Feature{

    String name;

    boolean active;

    List<String> attributes = new LinkedList<String>();

    /**
     * name element of feature element
     * @return
     */
    @XmlElement(name = "name")
    public final String getName(){
        return this.name;
    }

    public final void setName(String name){
        this.name = name;
    }

    /**
     * active element
     * @return
     */
    @XmlElement(name = "active")
    public final boolean getActive(){
        return this.active;
    }

    public final void setActive(boolean active){
        this.active = active;
    }

    /**
     * attribute elements
     * @return
     */
    @XmlElement(name = "attribute")
    public final List<String> getAttributes(){
        return this.attributes;
    }

    public final void setAttributes(List<String> attributes){
        this.attributes = attributes;
    }
}

它总是抛出异常,因为我只在propOrder中定义了一个属性。但由于属性是多个,可能是一个或多个,我不知道实现它。 或者您知道其他方式来订购元素

感谢您的提前帮助

1 个答案:

答案 0 :(得分:3)

propOrder基于字段/属性名称而不是XML元素名称。所以你应该

@XmlType(propOrder = {"name", "active","attributes"})

了解更多信息