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>
因此。我想用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>
是否可以使用jaxb?
P.S。 id 不是唯一的 - 可能有很多id =“22”的项目等。
答案 0 :(得分:2)
尝试将您的item
更改为TreeSet
Resource
@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;
}