Java 使用JAXB进行排序解组

Java 使用JAXB进行排序解组,java,jaxb,Java,Jaxb,假设我有一个XML: <root> <node> <order-id>4</order-id> ..... </node> <node> <order-id>1</order-id> .... </node> </root> 4. ..... 1. .... 当我解组这个xml时,我希望我得到的列表

假设我有一个XML:

<root>
   <node>
      <order-id>4</order-id>
      .....
   </node>

   <node>
      <order-id>1</order-id>
      ....
   </node>
</root>

4.
.....
1.
....
当我解组这个xml时,我希望我得到的
列表
顺序id
值进行排序


有没有一种使用JAXB直接获取排序列表的方法?

如果您不介意设置而不是列表,请尝试

@XmlRootElement(name="node")
    class Node implements Comparable<Node> {
        @XmlElement(name="order-id")
        int orderId;

        @Override
        public int compareTo(Node n) {
            return orderId - n.orderId;
        }
    }

    @XmlRootElement(name="root")
    class Root {
        @XmlElement(name="node")
        Set<Node> nodes = new TreeSet<>(); 
    }
@XmlRootElement(name=“node”)
类节点实现了可比较的{
@XmlElement(name=“订单id”)
int-orderId;
@凌驾
公共整数比较(节点n){
return orderId-n.orderId;
}
}
@XmlRootElement(name=“root”)
类根{
@xmlement(name=“node”)
设置节点=新树集();
}
很好。如果Set不是一个选项,那么将Root更改为

@XmlRootElement(name="root")
class Root {
    List<Node> nodes;

    @XmlElement(name="node")
    public void setNodes(Node[] nodes) {
        Arrays.sort(nodes);
        this.nodes = Arrays.asList(nodes);
    }
}
@XmlRootElement(name=“root”)
类根{
列出节点;
@xmlement(name=“node”)
公共void集合节点(节点[]节点){
数组。排序(节点);
this.nodes=Arrays.asList(节点);
}
}

谢谢,我想试试这个。还有一个名为TreeList的ApacheCommons集合,也许它也能在不丢失列表实现的情况下为我工作。我不认为这是JAXB的责任,是吗?我的意思是,如果不依赖基础集合,就没有办法做到这一点。@EvgeniyDorofeev:我同意你的第一个解决方案。在这种情况下,Set更有意义,因为在ID上进行排序。第二个选项(Arrays.sort…)使我的日子:D+1