jaxb如何以某种顺序编组值?

时间:2012-02-01 13:47:10

标签: java jaxb

f.e我想要一个xml,其中我的集合的值按字母顺序存储:

<tag1>a</tag1>
<tag1>b</tag1>
<tag1>c</tag1>

是否可以使用jaxb?

谢谢。

2 个答案:

答案 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实例按字母顺序包含数据。