gpt4 book ai didi

java - 使用 JAXB 从 XML 文件读取时如何使用继承

转载 作者:行者123 更新时间:2023-11-30 11:13:02 24 4
gpt4 key购买 nike

您好,我这里有这些类(class):如您所见,Faculty 和 Student 继承了 Persons 的名称。而教师和学生也都具有其独特的属性

public class Persons{
protected String name;

public Persons(){
this(null);
}
public Persons(String name){
this.name = name;
}

public String getName(){
return this.name;
}
public String setName(String name){
this.name = name;
}
}

public class Student extends Persons{
private String studentId;

public Student(){
this(null,null);
}
public Student(String name,String studentId){
this.name = name;
this.studentId = studentId;
}



}
public class Faculty extends Persons{
private String facultyId;

public Faculty(){
this(null,null);
}
public Faculty(String name,String facultyId){
this.name = name;
this.facultyId = facultyId;
}
}

假设我有这些 XML 文件:

<persons>
<student>
<name>Example 1</name>
<studentid>id</studentid>
</student>
<student>
<name>Example 1</name>
<studentid>id</studentid>
</student>
</persons>

和 Faculty XML 文件:

<persons>
<faculty>
<name>Example 1</name>
<facultyid>id</facultyid>
</faculty>
<faculty>
<name>Example 1</name>
<facultyid>id</facultyid>
</faculty>
</persons>

我将如何设置类以从 xml 文件中解码。我已经使用没有继承的普通 xml 文件完成了此操作,但我只是想知道如果不在两个类中编写相同的属性我将如何执行此操作。谢谢!

最佳答案

使用 JAXB 编码或解码时,继承不会使任何事情复杂化.

这里要注意一件事:在您的 Java 类中,您有名为 studentId 的字段和 facultyId (大写字母 I)但在 XML 中,这些元素以小写字母 i 出现:<studentid><facultyid> .要么让它们写得一样,要么必须告诉 JAXB 存储这些字段值的 XML 元素名称是什么,注释如下:

public class Student extends Persons {
@XmlElement(name = "studentid")
private String studentId;

// ... rest of your class
}

public class Faculty extends Persons {
@XmlElement(name = "facultyid")
private String facultyId;

// ... rest of your class
}

既然我们已经说明了 id 字段在 XML 文件中的表示方式,我们必须创建包装类来读取学生的集合或院系的集合:

public class Students {
@XmlElement(name = "student")
public List<Student> students;
}

public class Faculties {
@XmlElement(name = "faculty")
public List<Faculty> faculties;
}

现在您拥有了所需的一切。您可以像这样解码 XML 文件:

Students students = JAXB.unmarshal(new File("students.xml"), Students.class);
Faculties faculties = JAXB.unmarshal(new File("faculties.xml"), Faculties.class);

关于java - 使用 JAXB 从 XML 文件读取时如何使用继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26577083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com