我有以下XML格式:
<repositories>
<set>
<id>1</id>
<name>First</name>
<spec>data</spec>
</set>
<set>
<id>2</id>
<name>INFO</name>
<spec>main</spec>
</set>
.
.
</repositories>
我创建了以下package-info.java
@javax.xml.bind.annotation.XmlSchema (
elementFormDefault=XmlNsForm.QUALIFIED,
xmlns = {}
)
package website.model;
import javax.xml.bind.annotation.XmlNsForm;
以下课程:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Repositories {
@XmlElement
private ListofRepositories repositories;
public ListofRepositories getRepositories() {
return repositories;
}
public void setRepositories(ListofRepositories repositories) {
this.repositories = repositories;
}
}
包裹套装
@XmlAccessorType(XmlAccessType.FIELD)
public class ListofRepositories {
private List<Sets> set;
public List<Sets> getSet() {
return set;
}
public void setSet(List<Sets> set) {
this.set = set;
}
}
数据:
@XmlAccessorType(XmlAccessType.FIELD)
public class Sets {
private Long id;
private String name;
private String spec;
//get set
}
我不知道为什么这不起作用。响应始终为null。我用Java和JAXB注释实现了类似的过程,我从来没有遇到过这种问题。有谁知道什么是错的,我该如何解决?
答案 0 :(得分:2)
对于上面的xml,您需要以下类结构:
@XmlRootElement(name="repositories")
@XmlAccessorType(XmlAccessType.FIELD)
public class Repositories {
@XmlElement
private List<Sets> set;
//getter and setter
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Sets {
private Long id;
private String name;
private String spec;
//getter and setter
}
但是,根据你的类结构,你将得到以下xml:
<Repositories>
<repositories>
<set>
<id></id>
<name></name>
<spec></spec>
</set>
<set>
<id></id>
<name></name>
<spec></spec>
</set>
.
.
.
</repositories>
</Repositories>
答案 1 :(得分:1)
使用JAXB你也可以从xsd文件中生成这些类 - 并根据xsd检查传入的xml(这将显示为什么它不会接受它)