How to annotate a list using @XmlElement?

前端 未结 3 1440
忘掉有多难
忘掉有多难 2020-12-29 03:08

I have the following annotation using javax.xml.bind.annotation.XmlElement:

@XmlElement         
public List getKeywords() {
    r         


        
3条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-29 04:02

    You need to leverage @XmlElementWrapper and @XmlElement.

    Java Model

    Content

    import java.util.List;
    import javax.xml.bind.annotation.*;
    
    @XmlRootElement
    public class Content {
    
        private List keywords;
    
        public Content() {}
    
        @XmlElementWrapper
        @XmlElement(name="keyword")
        public List getKeywords() {
            return keywords;
        }
    
        public void setKeywords(List keywords) {
            this.keywords = keywords;
        }  
    
    }
    

    Demo Code

    Demo

    import java.util.*;
    import javax.xml.bind.*;
    
    public class Demo {
    
        public static void main(String[] args) throws Exception {
            JAXBContext jc = JAXBContext.newInstance(Content.class);
    
            List strings = new ArrayList(2);
            strings.add("foo");
            strings.add("bar");
    
            Content content = new Content();
            content.setKeywords(strings);
    
            Marshaller marshaller = jc.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            marshaller.marshal(content, System.out);
        }
    
    }
    

    Output

    
    
        
            foo
            bar
        
    
    

    For More Information

    Below are links to a couple articles from my blog that provide additional information:

    • http://blog.bdoughan.com/2010/09/jaxb-collection-properties.html
    • http://blog.bdoughan.com/2012/12/jaxb-representing-null-and-empty.html

提交回复
热议问题