- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
abstract Class A{
}
Class B extends A{
}
@XmlRootElement
Class C {
@XmlElement(name = "tobeserialized")
A tobeserialized;
}
Class D{
public void marshal(){
C all = getData();
JAXB.marshal(all, new File("saved.xml");
}
为了让 JAXB 知道类 B 是类 A 的子类,我需要在类 A 上放置一个 @XmlSeeAlso(value = {B.class})。我们有大约 50 个 A 的子类。
但是项目依赖是这样的,A类位于一个不能访问B类的包中。所以我不能把注解放在A类上。
有什么替代方案可以让 JAXB 序列化 A 类的子类?
最佳答案
@XmlSeeAlso
映射继承关系时不需要注释,但这是最常使用的时候。 @XmlSeeAlso
的作用是告诉 JAXB 为无法通过遍历类推断出的类拉入并生成元数据。
在您的示例中,如果您创建了 JAXBContext
在 C
上类 ( JAXBContext.newInstance(C.class)
) 然后是 A
由于 tobeserialized
类也将被处理字段,但是 B
不会,因为 Java 中没有找到子类的机制。你可以通过输入 @XmlSeeAlso(B.class)
来解决这个问题在 A
或者通过在用于引导 JAXBContext
的类中包含子类:
JAXBContext.newInstance(B.class, C.class);
关于java - 替代@XmlSeeAlso,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16935649/
http://download.oracle.com/javase/6/docs/api/javax/xml/bind/annotation/XmlSeeAlso.html 据此,我应该能够使我的根元
这与这篇文章相关https://stackoverflow.com/questions/21486734/jaxb-jersey-how-return-a-generic-dto-that-conta
我有以下内容: class A{ @XmlElement String name; //getters and setters } 和 class B extends A{
abstract Class A{ } Class B extends A{ } @XmlRootElement Class C { @XmlElement(name = "tobeserial
我正在使用 JAXB 从 生成 Java 代码几个 XSD 文件 .然后,在 OSGi 容器中,我将 XML 文件解码为生成的代码。 XSD 使用 xsd:any 元素:
我正在从wsdl生成java类使用cxf / jaxb和配置 ,这给了我直接从 xml 中通过 getter 和 setter 获取元素的优势,而不必实例化 JAXBElement每次都明确。 我想要
我对 JAXB 的这两个方面感到困惑。 据我了解,当将冒号分隔的包名称作为上下文路径传递到 newInstance 时JAXBContext 的方法,JAXB 会将这些包下的所有类添加到其作用域中,以
而不是这个 @XmlSeeAlso({User.class,Role.class,Function.class}) 我想要这样的东西: @XmlSeeAlso(Access.getWebService
我正在上一个类,其中我正在获取对象列表。我正在使用 XmlSeeAlso 注释来包含列表中存在的类。这是我的类(class): @XmlRootElement @XmlSeeAlso({BookSto
我正在使用 Java 和 Jersey 编写一个 RESTful 网络服务,该服务将接受 XML 或 JSON 输入。 Jackson 用作 JSON 反序列化器,并集成到 Jersey 配置中。 端
我正在使用 JAXB 绑定(bind)直接解码到我的领域层对象,这些对象是生成的网络服务类型的子类。这是一个很好的解决方案,因为我可以覆盖方法并提供编写自定义逻辑等。但是,XJC 编译器坚持将 @Xm
在引用 JAXB 实现中,无论如何要让 XmlSeeAlso 使用来自 XmlRootElement 的 name= 值? 我想要的效果是 type 属性使用 name= value 而不是来自 Xm
目前我正忙于一个使用 XML 消息传递的项目。我有一个通用模式,其中包含抽象类型和一些可重用的类型定义和元素。对于我正在处理的每种消息,都有一个单独的模式(具有不同的目标 namespace )导入通
我正在使用 Maven 的 cxf-codegen-plugin 从 wsdl/xsd 文件生成 Java 类(然后基于它们打包一个 jar) .我之所以选择这个插件而不是其他选项,是因为它允许我“动
我遇到如下 JAXB 解码错误。foo.bar.Base 是一个抽象类,带有 @XmlSeeAlso 注释,其中列出了 foo.bar.SubBase (它是 foo.bar.Base 的具体子类)
解释和解决方法 目前,我正在 JEE6 项目中使用 JAX-RS 并让 JAXB 绑定(bind)自动处理将数据转换为 XML 和 JSON。一切都工作得非常出色,直到我尝试创建一个通用响应对象来包装
让我们学习以下类(class): @XmlType(name = "TestClass") //@XmlSeeAlso({SomeClassOne.class, SomeClassTwo.class}
我是一名优秀的程序员,十分优秀!