2011-11-03 29 views
5

Puede usted por favor diagnosticar por qué mi código imprime [null, null, null, null]:JAXB unmarshal devolver valores nulos para los atributos

Unmarshaller m = JAXBContext.newInstance(Roles.class).createUnmarshaller(); 
Roles root = m.ummarshal(new FileReader("test.xml")); 
System.out.println(root); 

Probé la depuración en Eclipse, pero los puntos de corte en las incubadoras y captadores Don' t golpear

test.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<Roles> 
<Ele Id="1" Value="Yes"/> 
<Ele Id="2" Value="Yes"/> 
<Ele Id="3" Value="No"/> 
<Ele Id="4" Value="Yes"/> 
</Roles> 

Roles.java

@XmlRootElement(name="Roles") 
public class Roles { 
private List<Ele> EleList; 
public Roles() {super();} 

@XmlElement(name="Ele") 
public List<Ele> getEleList() {return EleList;} 
public void setEleList(List<Ele> EleList) {this.EleList = EleList;} 
public String toString() {return EleList.toString();} 
} 

Ele.java

public class Ele { 

@XmlAttribute 
private String Id; 

@XmlAttribute 
private String Value; 

public Ele(){super();} 

public String getId() {return Id;} 
public void setId(String id) {Id = id;} 
public String getValue() {return Value;} 
public void setValue(String value) {Value = value;} 

public String toString() { if(Id == null || Value == null) return null; else return Id + Value;} 
} 
+0

En ese caso, puedes publicar que como una respuesta y aceptar en varios días. –

Respuesta

6

me resolvió el problema mismo.

tiene que escribir: @XmlAttribute(name="Id") & @XmlAttribute(name="Value") por encima de la getId() y getValue() en lugar de simplemente @XmlAttribute. Los nombres de los identificadores no son recogidos.

1

El problema es que no está siguiendo las convenciones de nomenclatura de Java: las variables deben comenzar con letras minúsculas. Si ha utilizado los nombres de variables y elementos minúsculas, que funcionaría sin enumerar los nombres de forma explícita:

@XmlAttribute 
private String id; 

public String getId() {return id;} 
public void setId(String id) {id = id;} 

y

<?xml version="1.0" encoding="UTF-8" ?> 
<Roles> 
<Ele id="1" value="Yes"/> 
<Ele id="2" value="Yes"/> 
<Ele id="3" value="No"/> 
<Ele id="4" value="Yes"/> 
</Roles> 
Cuestiones relacionadas