2011-11-03 16 views
5

के लिए शून्य मान लौटने आप कृपया का निदान कर सकते हैं क्यों मेरे कोड प्रिंट बाहर [अशक्त, अशक्त, अशक्त, अशक्त]:JAXB unmarshal विशेषताओं

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

मैं setters और getters डॉन में ग्रहण में डिबगिंग लेकिन breakpoints की कोशिश की ' टी मारा

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

उस मामले में, आप एक जवाब के रूप कि पोस्ट और कई दिनों में स्वीकार कर सकते हैं। –

उत्तर

6

मैं इस समस्या अपने आप हल किया। @XmlAttribute(name="Id") & getId() और getValue() ऊपर @XmlAttribute(name="Value") सिर्फ @XmlAttribute के स्थान पर:

आप लिखने के लिए की जरूरत है। पहचानकर्ता नाम नहीं उठाए जाते हैं।

1

समस्या यह है कि आप जावा नामकरण सम्मेलनों का पालन नहीं कर रहे हैं: वेरिएबल्स को लोअरकेस अक्षर से शुरू करने की आवश्यकता है। आपको लोअर केस चर और तत्व नाम का इस्तेमाल करते हैं, तो यह स्पष्ट रूप से नामों की सूची के बिना काम करेगा:

@XmlAttribute 
private String id; 

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

और

<?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>