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