JAXB在不同的根元素中重用相同的对象

时间:2016-08-09 13:04:30

标签: jaxb

我试图将xml转换为java对象并使用JAXB。 xml文件的内容:

<root1>
    <element attr='attr-value1'>
      <child>some-value1</child>
    </element>
</root1>
<root2>
    <element attr='attr-value2'>
      <child>some-value2</child>
    </element>
</root2>

我为&#34;元素&#34;创建了一个类。由于root1和root2的子对象相同,我不想为两者创建单独的类。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以在项目中使用相同类型的多个根。

以下是一个例子:

<强> Root1.java

@XmlRootElement(name = "root1")
public class Root1 {

  @XmlElement(name="element")
  protected Element element;
}

<强> Root2.java

@XmlRootElement(name = "root2")
public class Root2 {

  @XmlElement(name="element")
  protected Element element;
}

<强> Element.java

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
  ...
})
public class Element {
  ...
}

修改

您无法选择2个单独的类,但可以使用继承。

继承示例:

<强> Root.java

public class Root {

  @XmlElement(name="element")
  protected Element element;
}

<强> Root1.java

@XmlRootElement(name = "root1")
public class Root1 extends Root {
  // Here Element is inherited from Root class
  // So you don't need to declare it
}

<强> Root2.java

@XmlRootElement(name = "root2")
public class Root2 extends Root {
  // Here Element is inherited from Root class
  // So you don't need to declare it
}

<强> Element.java

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
  ...
})
public class Element {
  ...
}