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

リストの代わりに設定しても構わない場合は、試してください

@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 に答える