我使用以下注释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)