Java 用JAXB注释绑定XML

Java 用JAXB注释绑定XML,java,jaxb,Java,Jaxb,我有以下XML格式: <repositories> <set> <id>1</id> <name>First</name> <spec>data</spec> </set> <set> <id>2</id> <name>INFO</nam

我有以下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>
以及下列类别:

@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;
}

}

我不知道为什么这样不行。响应总是空的。我用Java和JAXB注释实现了类似的过程,我从来没有遇到过这种问题。有人知道哪里出了问题,我如何修复它吗?

使用JAXB,您还可以从xsd文件生成这些类——并根据xsd检查传入的xml(这将显示为什么它不会接受它)

对于上述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

}
@XmlRootElement(name=“repositories”)
@XmlAccessorType(XmlAccessType.FIELD)
公共类存储库{
@XmlElement
私有列表集;
//接二连三
}
@XmlAccessorType(XmlAccessType.FIELD)
公共类集合{
私人长id;
私有字符串名称;
私有字符串规范;
//接二连三
}
但是,根据您的类结构,您将获得以下xml:

<Repositories>
  <repositories>
    <set>
      <id></id>
      <name></name>
      <spec></spec>
    </set>
    <set>
      <id></id>
      <name></name>
      <spec></spec>
    </set>
    .
    .
    .
  </repositories>
</Repositories>

.
.
.

请讲清楚。以上xml需要类结构还是以上类结构需要xml?我需要检索以下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

}
<Repositories>
  <repositories>
    <set>
      <id></id>
      <name></name>
      <spec></spec>
    </set>
    <set>
      <id></id>
      <name></name>
      <spec></spec>
    </set>
    .
    .
    .
  </repositories>
</Repositories>