小编use*_*010的帖子

如何使用@XmlElement注释列表?

我使用以下注释javax.xml.bind.annotation.XmlElement:

@XmlElement         
public List<String> getKeywords() {
    return keywords;
}
Run Code Online (Sandbox Code Playgroud)

当我编写一些示例内容时,会产生以下XML:

<keywords>keyword1</keywords>
<keywords>keyword2</keywords>
Run Code Online (Sandbox Code Playgroud)

我想获得以下XML:

<keywords>
    <keyword>keyword1</keyword>
    <keyword>keyword2</keyword>
</keywords>
Run Code Online (Sandbox Code Playgroud)

我应该使用什么样的注释?

我试过了

@XmlElementWrapper
@XmlElement(name="keyword")
Run Code Online (Sandbox Code Playgroud)

但随后整个内容消失,结果是:

<keywords/>
Run Code Online (Sandbox Code Playgroud)

如果我只尝试重命名元素,也会发生同样的情况:

@XmlElement(name="keyword")
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

更新:

这是根据第一个答案更新的类的完整代码,但它仍然无效(<keywords/>当编组为XML时,结果是一个空列表):

import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Content {

    private List<String> keywords;

    public Content() {}

    @XmlElementWrapper(name="keywords")
    @XmlElement(name="keyword")
    public List<String> getKeywords() {
        return keywords;
    }

    public void setKeywords(List<String> keywords) {
        this.keywords = keywords;
    }  

}
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下相同的结果:

import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import …
Run Code Online (Sandbox Code Playgroud)

java xml annotations jaxb

28
推荐指数
2
解决办法
4万
查看次数

标签 统计

annotations ×1

java ×1

jaxb ×1

xml ×1