3

假设我有一个 XML:

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

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

当我解组这个 xml 时,我希望List<Node>得到的值是按order-id值排序的。

有没有办法使用 JAXB 直接获取排序列表?

4

1 回答 1

6

如果您不介意 Set 而不是 List,请尝试

@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<>(); 
    }

工作正常。如果 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);
    }
}
于 2013-01-18T08:01:33.290 回答