我的XML看起来像
func
和模型类看起来像
<Record>
<Student>
<name>sumit</name>
<rollno>123</rollno>
<Student>
<Record>
现在在我的应用程序中,我正在使用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;
}
}
但我在data.getPerson();
中得到InputStream inputStream = new FileInputStream("/home/sumit/abc.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Record.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Record data = (Record) jaxbUnmarshaller.unmarshal(inputStream);
任何人都可以帮助我解决我的错误。
答案 0 :(得分:0)
这不会按照你想要的方式运作。 XML元素由标记名称标识,标记名称需要与Java类中的字段名称相对应。将<Record>
建立为类Record
的值后,<Student>
在该类的字段中没有对应项,并且JAXB无法解组此内容。
您应该能够在使用此修改后的类更改<Student>
到<student>
之后解组8:
class Record{
private Student student;
public Student getStudent(){
return student;
}
public void setStudent(Student value){
student = value;
}
}
(请注意,由于类Record中的person字段的类型不匹配,因此存在另一个问题。)