【问题标题】:Binding XML with JAXB annotations使用 JAXB 注释绑定 XML
【发布时间】:2012-07-15 15:12:47
【问题描述】:

我有以下 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

}

我不知道为什么这不起作用。响应始终为空。我用 Java 和 JAXB 注释实现了类似的过程,但我从来没有遇到过这种问题。有谁知道出了什么问题,我该如何解决?

【问题讨论】:

  • 要清楚。您需要上述 xml 的类结构或上述类结构的 xml 吗?
  • 我需要检索以下xml格式。所以我需要提供确切的结构才能成功。

标签: java jaxb


【解决方案1】:

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

【讨论】:

  • 我只想检索我在问题中提到的格式。标签 不应出现。我尝试执行您的提议,但没有成功。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多