JAXB解组返回属性的空值

sat*_*h b 6 java xml jaxb

你能否诊断我的代码打印出来的原因[null,null,null,null]:

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

我尝试在eclipse中调试,但是在setter和getter处的断点没有被击中

的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>
Run Code Online (Sandbox Code Playgroud)

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();}
}
Run Code Online (Sandbox Code Playgroud)

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;}
}
Run Code Online (Sandbox Code Playgroud)

sat*_*h b 6

我自己解决了这个问题.

你需要写:@XmlAttribute(name="Id")@XmlAttribute(name="Value")以上getId()getValue()不是仅仅@XmlAttribute.标识符名称未被提取.