Java 使用jaxb编组列表

Java 使用jaxb编组列表,java,jaxb,Java,Jaxb,我创建了一个这样的类 @XmlRootElement(name="mylist") public class JaxbList<T>{ @XmlElementWrapper(name="list") @XmlElement(name="Item") protected List<T> list; public JaxbList(){} public JaxbList(List<T> list){ this.li

我创建了一个这样的类

 @XmlRootElement(name="mylist")

public class JaxbList<T>{

@XmlElementWrapper(name="list")
@XmlElement(name="Item")
    protected List<T> list;

    public JaxbList(){}

    public JaxbList(List<T> list){
        this.list=list;
    }
        public List<T> getList(){       
        return list;
    }
}
编组方法创建以下XML:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mylist>
    <list>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 1</Item>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 2</Item>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 3</Item>
    </list>
</mylist>

第1栏
第2栏
第3栏
现在我想整理一个列表:

protected List<List<String>> list
受保护列表
XML输出应如下所示:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mylist>
    <list>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 1</Item>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 2</Item>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 3</Item>
    </list>
<list>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 1</Item>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 2</Item>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 3</Item>
    </list>
</mylist>

第1栏
第2栏
第3栏
第1栏
第2栏
第3栏
提前谢谢

以下是一个示例:

public class Test{
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name = "mylist")
    static class MyList<T> {

        @XmlAnyElement
        protected Collection<Collection<T>> list;

        public MyList() {
        }

        public MyList(Collection<Collection<T>> list) {
            this.list = list;
        }

        public Collection<List<T>> getList() {
            return list;
        }
    }

    @XmlRootElement(name = "sublist")
    @XmlAccessorType(XmlAccessType.FIELD)
    static class List<T> {
        @XmlAnyElement
        protected Collection<T> sublist;

        public Collection<T> getSublist() {
            return sublist;
        }

        public void setSublist(Collection<T> sublist) {
            this.sublist = sublist;
        }

        public List() {
        }
    }

    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)
    static class Item {
        @XmlValue
        private String value;

        public Item(){

        }
        public Item(String value){
            this.value = value;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }
    public static void main(String[] args){
        try {
            context = JAXBContext.newInstance(MyList.class, List.class, Item.class);
            Marshaller m = context.createMarshaller();
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            m.marshal(jaxbList, System.out);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
    }
}
公共类测试{
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name=“mylist”)
静态类MyList{
@XmlAnyElement
受保护的收集清单;
公共MyList(){
}
公共MyList(集合列表){
this.list=列表;
}
公共集合getList(){
退货清单;
}
}
@XmlRootElement(name=“sublist”)
@XmlAccessorType(XmlAccessType.FIELD)
静态类列表{
@XmlAnyElement
受保护的集合子列表;
公共集合getSublist(){
返回子列表;
}
public void setpublist(集合子列表){
this.sublist=子列表;
}
公开名单(){
}
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
静态类项{
@XmlValue
私有字符串值;
公共项目(){
}
公共项(字符串值){
这个值=值;
}
公共字符串getValue(){
返回值;
}
公共void设置值(字符串值){
这个值=值;
}
}
公共静态void main(字符串[]args){
试一试{
context=JAXBContext.newInstance(MyList.class、List.class、Item.class);
Marshaller m=context.createMarshaller();
m、 setProperty(Marshaller.JAXB_格式的_输出,Boolean.TRUE);
m、 marshal(jaxbList,System.out);
}捕获(JAXBEException e){
e、 printStackTrace();
}
}
}

您尝试使用列表中的哪些内容?如果你告诉我们你试过什么,可能会有人帮你。这比有人从零开始为您编写代码更有可能。我不知道如何构建用于编组列表的代码。任何提示都将真正帮助我构建代码。非常感谢。
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mylist>
    <list>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 1</Item>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 2</Item>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 3</Item>
    </list>
<list>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 1</Item>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 2</Item>
        <Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 3</Item>
    </list>
</mylist>
public class Test{
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name = "mylist")
    static class MyList<T> {

        @XmlAnyElement
        protected Collection<Collection<T>> list;

        public MyList() {
        }

        public MyList(Collection<Collection<T>> list) {
            this.list = list;
        }

        public Collection<List<T>> getList() {
            return list;
        }
    }

    @XmlRootElement(name = "sublist")
    @XmlAccessorType(XmlAccessType.FIELD)
    static class List<T> {
        @XmlAnyElement
        protected Collection<T> sublist;

        public Collection<T> getSublist() {
            return sublist;
        }

        public void setSublist(Collection<T> sublist) {
            this.sublist = sublist;
        }

        public List() {
        }
    }

    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)
    static class Item {
        @XmlValue
        private String value;

        public Item(){

        }
        public Item(String value){
            this.value = value;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }
    public static void main(String[] args){
        try {
            context = JAXBContext.newInstance(MyList.class, List.class, Item.class);
            Marshaller m = context.createMarshaller();
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            m.marshal(jaxbList, System.out);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
    }
}