I cannot comment existing answers so I have to write a new one.
No existing asnwers take into account the situaion where XML tags contains lower cases and upper cases letters. I lerned va trial and error that in this case you have to use
@XmlElement(name="ActualAttriubuteName")
Here is an example
<?xml version='1.0' encoding='utf-8'?><Terminal><TermInfo><IDM>1</IDM></TermInfo></Terminal>
The corresponfing beans are:
@XmlRootElement(name="Terminal")
public class Terminal implements Serializable{
private static final long serialVersionUID = -5541959943076783942L;
private TermInfo termInfo = null;
@Override
public String toString() {
return "Terminfo [termInfo=" +termInfo.toString() + "]";
}
@XmlElement(name="TermInfo")
public TermInfo getTermInfo() {
return termInfo;
}
public void setTermInfo(TermInfo termInfo) {
this.termInfo = termInfo;
}
}
and
import java.io.Serializable;
import javax.xml.bind.annotation.XmlElement;
public class TermInfo implements Serializable{
private static final long serialVersionUID = 6829846773317527647L;
private Integer idm = null;
@Override
public String toString() {
return "id=" +idm + "]";
}
@XmlElement(name="IDM")
public Integer getIdm() {
return idm;
}
public void setIdm(Integer idm) {
this.idm = idm;
}
}
The unmarshal code is
xml = "<?xml version='1.0' encoding='utf-8'?><Terminal><TermInfo><IDM>1</IDM></TermInfo></Terminal>";
StringReader sr = new StringReader(xml);
JAXBContext jaxbContext;
try {
jaxbContext = JAXBContext.newInstance(Terminal.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Terminal termInfo= (Terminal) unmarshaller.unmarshal(sr);
System.out.println(termInfo.toString());
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}