JAXB:根据一个特定元素的内容映射超类和子类

时间:2018-01-26 16:36:00

标签: java jaxb

我有一个以下格式的XML文件:

<persons>
  <person>
    <firstname>John</firstname>
    <lastname>Doe</lastname>
    <function>manager</function>
    <salary>4000.0</salary>
 </person>
 <person>
   <firstname>Mary</firstname>
   <lastname>Jones</lastname>
   <function>employee</function>
 </person>
<person>

我想根据它们的功能将它们读入Java对象:如果是function = manager,那么应该创建一个新的Manager(),否则应该创建一个新的Employee。

Manager是Employee的子类。这些类如下所示:

public class Employee {
     private String firstName;
     private String lastName;
     private String function;

    // getters and setters 
 }

 public class Manager extends Employee {
      private double salary;
      // getters and setter
 }

我已经尝试过使用@XmlCustomizer,@ XmlDiscrimitatorNode和@XmlDiscriminatorValue的组合等等,但是我无法使用它。我找到的所有示例都是您要映射2个扩展第3个子类的子类的形式,但从未想要将超类和子类映射到一起。有人可以帮帮我吗?

0 个答案:

没有答案