2016-03-23 88 views
0

我有一個XML看起來像如何獲得

<Record> 
    <Student> 
    <name>sumit</name> 
    <rollno>123</rollno> 
    <Student> 
<Record> 

和模型類在Java中,從兒童類元素在XML基類引用看起來像

class Record{ 
    @JsonProperty("person") 
    private Person person; 
    public String getPerson(){ 
     return person; 
    } 
    public void setPerson(String person){ 
     this.person=person; 
    } 
} 

abstract class Person{ 
    @JsonProperty("name") 
    private String name; 
    public String getName(){ 
     return name; 
    } 
    public void setName(String name){ 
     this.name=name; 
    } 
} 

@JsonTypeName("Student") 
class Student extends Person{ 
    @JsonProperty("rollno") 
    private String rollno; 
    public String getrollno(){ 
     return rollno; 
    } 
    public void setName(String rollno){ 
     this.rollno=rollno; 
    } 
} 

現在,在我的應用程序是從創建XML對象,如下

InputStream inputStream = new FileInputStream("/home/sumit/abc.xml"); 
JAXBContext jaxbContext = JAXBContext.newInstance(Record.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
Record data = (Record) jaxbUnmarshaller.unmarshal(inputStream); 

但我在data.getPerson越來越null();

任何人都可以幫助我,我做錯了什麼。

回答

0

這不會按照您希望的方式工作。 XML元素由標籤名稱標識,標籤名稱需要與Java類中的字段名稱相對應。一旦<Record>已被建立爲類Record的值,則<Student>在該類的字段中沒有對應項,並且JAXB無法解組此內容。

你應該能夠解組8after這個修改後的類改變<Student><student>):

class Record{ 
    private Student student; 
    public Student getStudent(){ 
     return student; 
    } 
    public void setStudent(Student value){ 
     student = value; 
    } 
} 

(請注意,還有另一個問題是由於類型不匹配的字符串與人的類人場記錄)。