繁体   English   中英

将XML与JAXB注释绑定在一起

[英]Binding XML with JAXB annotations

我有以下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注释实现了类似的过程,我从来没有遇到过这种问题。 有谁知道什么是错的,我该如何解决?

对于上面的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>

与JAXB你也可以生成从XSD文件这些类-并检查传入的XML对XSD(这将显示为什么它不会接受它)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM