use*_*513 5 java xml rest jaxb xml-parsing
我有一个需要在代码中创建的REST响应:
<sample>
<tags>
<tag>
<name>ABC</name>
<Date>2014-10-14T12:30:05Z</ingress>
</tag>
<tag>
<name>DEF</name>
<Date>2014-10-14T12:30:05Z</ingress>
</tag>
</tags>
</sample>
Run Code Online (Sandbox Code Playgroud)
但是,我得到了
<sample>
<tags>
<name>ABC</name>
<Date>2014-10-14T12:30:05Z</ingress>
</tags>
<tags>
<name>DEF</name>
<Date>2014-10-14T12:30:05Z</ingress>
</tags>
</sample>
Run Code Online (Sandbox Code Playgroud)
在响应中.有人可以帮助我如何声明Java类以获得所需的REST响应?
这是java代码:
@XmlRootElement(name = "sample")
public class Sample {
private List<Tag> tags;
@XmlElement(name = "tags")
public List<Tag> getTags() {
return tags;
}
/**
* @param tags
* the tags to set
*/
public void setTags(List<Tag> tags) {
this.tags = tags;
}
}
@XmlRootElement(name = "tag")
public class Tag {
private String name;
private Date date;
/**
* @return the name
*/
@XmlElement(name = "name")
public String getName() {
return name;
}
/**
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the date
*/
@XmlElement(name = "date")
public Date getDate() {
return date;
}
/**
* @param date
* the date to set
*/
public void setDate(Date date) {
this.date = date;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
@XmlElement(name = "tags")
List<Tag> tags;
Run Code Online (Sandbox Code Playgroud)
它的基本内容是,为列表中的每个项目创建一个名为 的元素<tags>。所以本质上,你所拥有的只是一个<subject>包装多个<tags>.
获得另一个“上层”元素的几个选项
您可以创建一个“上层”类来表示,例如Tags
public class Tags {
protected List<Tag> tags;
@XmlElement(name = "tag")
public List<Tag> getTags() {
if (tags == null) {
tags = new ArrayList<>();
}
return tags;
}
public void setTags(List<Tag> tags) {
this.tags = tags;
}
}
Run Code Online (Sandbox Code Playgroud)
然后有一个实例Tags作为属性Sample
@XmlRootElement(name = "sample")
public class Sample {
private Tags tags;
@XmlElement(name = "tags")
public void setTags(Tags tags) {
this.tags = tags;
}
public Tags getTags() {
return tags;
}
}
Run Code Online (Sandbox Code Playgroud)
或者
一个更简单的解决方案就是使用@XmlElementWrapper
围绕 XML 表示生成包装元素。这主要用于生成围绕集合的包装 XML 元素
使用您的原始代码,您可以简单地将注释添加到列表中
@XmlRootElement(name = "sample")
public class Sample {
private List<Tag> tags;
@XmlElementWrapper(name = "tags")
@XmlElement(name = "tag")
public List<Tag> getTags() {
if (tags == null) {
tags = new ArrayList<>();
}
return tags;
}
public void setTags(List<Tag> tags) {
this.tags = tags;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2220 次 |
| 最近记录: |