加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用jaxb进行marshelling时使用派生类

发布时间:2020-12-14 19:14:52 所属栏目:Java 来源:网络整理
导读:我有一个具有公共基类的对象列表,我试图使用jaxb将其序列化为XML.我希望在编组时使用派生类的注释,但是我很难到达那里. import java.util.Arrays;import java.util.List;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import java

我有一个具有公共基类的对象列表,我试图使用jaxb将其序列化为XML.我希望在编组时使用派生类的注释,但是我很难到达那里.

import java.util.Arrays;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlRootElement;


public class Runner {
    @XmlRootElement(name="base")
    public static abstract class Base {
        public int baseValue;

        public Base() {
            this.baseValue = 0;
        }
    }

    @XmlRootElement(name="derived")
    public static class Derived extends Base {
        public int derivedValue;

        public Derived() {
            super();
            this.derivedValue = 1;
        }
    }

    @XmlRootElement(name="derived2")
    public static class Derived2 extends Base {
        public int derivedValue;

        public Derived() {
            super();
            this.derivedValue = 1;
        }
    }

    @XmlRootElement(name="base_list")
    public static class BaseList {
        public List

我想要:

但是,上面的代码给出了:

有没有办法强迫它使用派生类?在实际情况中,我事先并不知道可能来自Base的类.

请注意,我只需要编组,而不是解组数据.

最佳答案
您可以使用@XmlElementRef批注来处理此用例. @XmlElementRef对应于XML模式中的替换组的概念.

例如:

> http://bdoughan.blogspot.com/2010/11/jaxb-and-inheritance-using-substitution.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读