Java jaxb如何按属性对元素排序?

Java jaxb如何按属性对元素排序?,java,xsd,jaxb,Java,Xsd,Jaxb,f、 e.我有下一个xml方案: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns="http://www.example.com" elementFormDefault="qualified">

f、 e.我有下一个xml方案:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.example.com"
        xmlns="http://www.example.com"
        elementFormDefault="qualified">

    <xs:complexType name="TItem">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:int" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:element name="Resource">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="item" type="TItem" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>

基于xsd jaxb生成的java代码,我将使用该代码创建下一个xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Resource xmlns="http://www.example.com">
    <item id="10">asdf</item>
    <item id="2">some text</item>
    <item id="9">some item</item>
    <item id="14">vzxc</item>
</Resource>

asdf
一些文本
某项
vzxc
所以。我希望生成具有按id排序的项的xml。因此应该是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Resource xmlns="http://www.example.com">
    <item id="2">some text</item>
    <item id="9">some item</item>
    <item id="10">asdf</item>
    <item id="14">vzxc</item>
</Resource>

一些文本
某项
asdf
vzxc
使用jaxb可能吗


p.S.id不是唯一的-可能有许多id为“22”等的项目。

请尝试在
资源中将您的
项目更改为
树集

@XmlRootElement(name = "Resource")
public class Resource {
    @XmlElement(required = true)
    protected Collection<TItem> item;
    ....
    public Collection<TItem> getItem() {
        if (item == null) {
            item = new TreeSet<TItem>(cmp);//cmp is an instance of Comparator<TItem>
        }
    return this.item;
}
@XmlRootElement(name=“Resource”)
公共类资源{
@XmlElement(必需=true)
受保护的收集项目;
....
公共集合getItem(){
如果(项==null){
item=newtreeset(cmp);//cmp是Comparator的一个实例
}
退回此项目;
}

您可以实现返回集合以检索已排序列表的方法。我尝试使用上一种方法,但未对其进行排序。我将
更改为
已排序数据集
,并且运行良好