假设我有一个 XML:
<root>
<node>
<order-id>4</order-id>
.....
</node>
<node>
<order-id>1</order-id>
....
</node>
</root>
当我解组这个 xml 时,我希望List<Node>
得到的值是按order-id
值排序的。
有没有办法使用 JAXB 直接获取排序列表?
如果您不介意 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);
}
}