繁体   English   中英

使用JAXB对Unmarshalling进行排序

[英]Sorted Unmarshalling using JAXB

假设我有一个XML:

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

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

当我解组这个xml时,我希望我得到的List<Node>是按order-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<>(); 
    }

工作良好。 如果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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM