Java 序列化没有jaxb注释的基类

Java 序列化没有jaxb注释的基类,java,xml,jaxb,Java,Xml,Jaxb,我有一个我编辑的基类,所以我不能向它添加jaxb注释。 在派生类中,我想序列化基类的一些属性。 我该怎么做呢?注意:我是专家组的负责人和成员 如果您不能修改类来注释它们,那么您可能对EclipseLink JAXB(MOXy)中的外部映射文档扩展感兴趣 oxm.xml 下面是与我在博客()上的一个示例中指定的元数据等效的外部映射文档 演示 使用外部映射文档引导JAXBContext的代码如下所示: Map<String, Object> properties = new Hash

我有一个我编辑的基类,所以我不能向它添加jaxb注释。 在派生类中,我想序列化基类的一些属性。
我该怎么做呢?

注意:我是专家组的负责人和成员

如果您不能修改类来注释它们,那么您可能对EclipseLink JAXB(MOXy)中的外部映射文档扩展感兴趣

oxm.xml

下面是与我在博客()上的一个示例中指定的元数据等效的外部映射文档


演示

使用外部映射文档引导JAXBContext的代码如下所示:

Map<String, Object> properties = new HashMap<String, Object>(1);
properties.put(JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY, "blog/json/twitter/oxm.xml");
JAXBContext jc = JAXBContext.newInstance(new Class[] {SearchResults.class}, properties);
Map属性=新的HashMap(1);
put(JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY,“blog/json/twitter/OXM.XML”);
JAXBContext jc=JAXBContext.newInstance(新类[]{SearchResults.Class},属性);
了解更多信息


    • 这对我很有效。在此示例中,MyClass没有使用JAXB注释进行注释。MyClass是一个典型的JavaBean类

             try {
              JAXBContext jc = JAXBContext.newInstance(MyClass.class);
              MyClass cl = new MyClass();
              Marshaller m = jc.createMarshaller();
              m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
              m.marshal(new JAXBElement<MyClass>(new QName("","MyClass"), MyClass.class, cl), System.out);
      
          } catch (JAXBException ex) {
              Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
          }
      
      试试看{
      JAXBContext jc=JAXBContext.newInstance(MyClass.class);
      MyClass cl=新的MyClass();
      Marshaller m=jc.createMarshaller();
      m、 setProperty(Marshaller.JAXB_格式的_输出,Boolean.TRUE);
      m、 marshal(新的JAXBElement(新的QName(“,“MyClass”)、MyClass.class、cl、System.out);
      }捕获(JAXBEException-ex){
      Logger.getLogger(Main.class.getName()).log(Level.SEVERE,null,ex);
      }
      
             try {
              JAXBContext jc = JAXBContext.newInstance(MyClass.class);
              MyClass cl = new MyClass();
              Marshaller m = jc.createMarshaller();
              m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
              m.marshal(new JAXBElement<MyClass>(new QName("","MyClass"), MyClass.class, cl), System.out);
      
          } catch (JAXBException ex) {
              Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
          }