f.e我想要一个xml,其中我的集合的值按字母顺序存储:
<tag1>a</tag1>
<tag1>b</tag1>
<tag1>c</tag1>
是否可以使用jaxb?
谢谢。
答案 0 :(得分:3)
在Java方面使用有序集合。
<强>根强>
tag1
属性为SortedSet
。您可以在创建Comparator
时传递TreeSet
:
package forum9096805;
import java.util.*;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Root {
private SortedSet<String> tag1 = new TreeSet<String>();
public SortedSet<String> getTag1() {
return tag1;
}
public void setTag1(SortedSet<String> tag1) {
this.tag1 = tag1;
}
}
<强>演示强>
package forum9096805;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Root.class);
Root root = new Root();
root.getTag1().add("b");
root.getTag1().add("c");
root.getTag1().add("a");
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
}
}
<强>输出强>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<tag1>a</tag1>
<tag1>b</tag1>
<tag1>c</tag1>
</root>
答案 1 :(得分:2)
问题应该是:是否可以在XSD(XML Schmea)中使用?答案是否。但是您可以通过使用List实现或数组等有序集合来确保XML实例按字母顺序包含数据。