我正在编码(marshal)具有 Set 类型字段的对象。该实现是未排序的,因此生成的 XML 元素的顺序是任意的,而且每次进行编码(marshal)时我都会得到不同的顺序。
有没有办法告诉编码器如何在编码期间对字段内容进行排序?
最佳答案
您可以利用SortedSet
。如果您在实例上初始化 Set
的实例,那么 JAXB 将使用该实现而不是创建新的实现:
package forum7686859;
import java.util.Set;
import java.util.TreeSet;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Root {
//private Set<String> children = new HashSet<String>();
private Set<String> children = new TreeSet<String>();
public Set<String> getChildren() {
return children;
}
public void setChildren(Set<String> children) {
this.children = children;
}
}
关于sorting - JAXB 强制对集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7686859/