2012-07-15 111 views
1

我有下面的XML格式:XML绑定与JAXB注释

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

+0

清晰。上面的类结构需要上述xml或xml的类结构吗? – 2012-07-15 18:23:16

+0

我需要检索以下xml格式。所以我需要提供确切的结构才能成功。 – 2012-07-15 18:58:26

回答

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> 
+0

我只想检索问题中提到的格式。标签<存储库>不应该出现。我试图实现你的建议,但它没有奏效。 – 2012-07-15 19:05:30

+0

查看更新。我已添加名称属性 – 2012-07-15 19:11:23

1

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