`
cpop
  • 浏览: 9500 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用JAXB 将java继承的类序列化xml

    博客分类:
  • java
 
阅读更多
JAXB是将java实体类序列化和反序列化处理中比较方便的一个工具,在jaxb的使用中,若是实体类中存在继承的层次关系,那么就需要一些值得注意的地方了。
比如在开发百度轻应用时候就需要处理到:
<?xml version="1.0" encoding="UTF-8"?>
<urlset>
<url>
    <loc>http://www.baidu.com/</loc>
    <lastmod>2010-01-01</lastmod>
    <changefreq>always</changefreq>
    <priority>1.0</priority>
    <data>
        <display>
            <!-- display 标签内的字段为微站在标准 sitemap 协议基础上的扩展,
                描述微站所需的标签内容
            -->
        </display>
    </data>
</url>
</urlset>


可以看到此xml中,display节点下是根据各个模板的不同,而不同的,那么在java的开发实体构建中,我们是可以定义几个子类的,然后让它们来继承这个display类。则所有的模板格式就可以通过JAXB来生成了。
简化的格式如下:
public class A {
    B b;
}
public class B {}
public class C {}
public class D {}
public class E extends A {
    C c;
}
public class F extends A {
    D d;
}

这个方案看着比较直观也符合一般逻辑思想,但是问题在于实践中只能生成父类部分,结果如下:
<a>
    <b></b>
<a>

这并不是我们所需要的,所以需要申明一些标记来达到我们所需要的结果:
改造如下:
public class A {
    B b;
    @XmlElements({
        @XmlElement(name = "c", type=C.class),
        @XmlElement(name = "d", type=D.class)
    })
    E e;
}
public class B {}
public class E {}
public class C extends E {}
public class D extends E {}

这样的结构,最后就能正确生成了。
ps:类结构可以使用这个工具生成,http://xml2csharp.com/(我本是c#程序员,因为工作上的需要,所以在独自的学习java)
那么在实际的开发过程中,序列化成xml可能会碰到很多特殊的一些问题,但是自己去看并理解那些报错信息,对于我们问题的解决是有帮助的,灵活运用上面的那些xml标记,那么才能体现到JAXB的好用。
<完>
分享到:
评论

相关推荐

    使用JAXB处理XML文档WORD版最新版本

    同样地,也可以使用Unmarshal类的方法,将XML文档解析成Java对象,这就是反序列化的过程。 本文档还会介绍如何处理序列化和反序列化过程中的异常,以及如何自定义Java类与XML之间的映射关系。比如,可以通过使用...

    xml文件自动转成java对象工具

    5. **生成序列化和反序列化代码**:为了方便XML数据和Java对象之间的转换,工具还会生成解析XML和生成XML的代码,通常是基于JAXB(Java Architecture for XML Binding)或其他类似库。 除了XSD转Java,有些工具还...

    JAVA对象转换成XML(CDATA)

    在Java编程中,将对象转换成XML是一种常见的数据序列化方式,这有助于数据交换和存储。当遇到包含特殊字符如 "和 "&" 的文本时,XML解析器可能会产生错误,因为这些字符在XML语法中有特定含义。为了解决这个问题,...

    使用JAXB完成JAVAbean与xml互转

    JAXB还提供了许多高级功能,例如处理命名空间、处理复杂类型、处理继承结构、自定义序列化行为等。在实际项目中,了解这些高级特性能够帮助你更好地利用JAXB解决XML数据处理的问题。 总的来说,JAXB是Java平台中一...

    Java解析和生成XML.pdf

    Java解析和生成XML的知识点主要涵盖了使用JAXB(Java Architecture for XML Binding)框架来实现Java对象与XML(可扩展标记语言)之间的数据转换。JAXB提供了一种便捷的方式,通过注解(Annotation)来实现这一过程...

    xml与java对象映射

    例如,可以创建接口或抽象类,让所有Java对象实现这些接口或继承抽象类,然后编写自定义的序列化和反序列化方法。 5. **性能考虑** 不同的映射技术有不同的性能特性。DOM在内存占用和处理速度上可能不如SAX,而...

    Java转换xml.rar

    5. 反序列化XML:`Person person = (Person) xstream.fromXML(xml);` XStream库还提供了许多高级功能,例如自定义转换器、处理日期和时间、处理循环引用等。此外,它支持JAXB注解,这使得XML映射更加灵活。 总的来...

    jaxb2.0英文文档

    3. **绑定编译器(Binder)**:JAXB提供的绑定编译器会将XML绑定文件转换为源代码,生成用于序列化和反序列化的类。 4. **上下文(Context)**:JAXB上下文是Java应用程序和XML之间的桥梁,它负责管理所有已知的...

    jaxb api 2.2

    5. **解析(Unmarshalling)和序列化(Marshalling)**:`Unmarshaller`和`Marshaller`接口分别用于将XML数据解析成Java对象和将Java对象序列化成XML。它们提供了多种方法以适应不同的使用场景,如读写文件、流或者...

    XML转成Java的DTO和Entity

    而在序列化过程中,JAXB将Java对象的属性转换为XML格式的字符串。 在这个过程中,开发者需要注意一些关键点。例如,XML的属性和元素在Java中的表示是不同的,XML的属性通常表示为类的字段,而XML元素则可以通过字段...

    JAXB 学习笔记

    - 使用`@XmlElement`、`@XmlAttribute`等注解将类的字段映射到XML元素或属性。 **步骤2:** 创建JAXBContext - 使用`JAXBContext.newInstance()`方法,传入要映射的Java类的类名或包名。 **步骤3:** 解析XML到...

    JAVA源码Java转换xmlJAVA源码Java转换xml

    远程服务接收到XML格式的数据后,再进行相应的反序列化处理,恢复为Java对象,以供服务逻辑使用。 在实现转换的过程中,还可能会遇到一些挑战,比如类型兼容性问题、数据精度问题、特殊字符处理等。因此,在转换...

    JAXB学习笔记

    `Persion`类就是一个被JAXB支持的类,它使用了`@XmlRootElement`注解来声明这个类对应于XML文档中的根元素,而`@XmlAccessorType(XmlAccessType.FIELD)`注解则表明所有字段(而非getter和setter方法)都将被考虑在...

    SpringBoot返回json和xml的示例代码

    1. 在Java代码中定义一个User类,并使用JAXB注解来支持XML的序列化。 2. @XmlRootElement注解表示整个User对象将会被映射为XML文档的根元素。 3. @XmlElement注解用于指定Java类中的字段与XML元素之间的映射关系。 ...

    JAXB Demo及namespace的prefix自定义解决方案

    现在,当你使用JAXB进行序列化和反序列化时,这个自定义的前缀就会生效。请注意,如果你的XML文档中已经存在使用特定前缀的元素,确保你的mapper返回相同的前缀以避免解析错误。 在实际应用中,你可能还需要处理更...

    对XML数据与JVAV对象之间的相互转换

    在Java编程中,XML数据和Java对象间的转换是常见的需求,尤其是在处理配置文件、数据交换或者序列化时。本篇将深入探讨如何实现XML数据与Java对象之间的相互转换。 一、XML到Java对象的转换 1. DOM解析:Document ...

    xml.rar_java 操作xml

    在Java应用程序中,XML常用于配置文件、数据交换、序列化等场景。例如,Spring框架就广泛使用XML配置,而JAXB则提供了一种将Java对象转换为XML(反之亦然)的机制。 总结,Java提供了多种API来操作XML,如DOM、SAX...

    javabean2xml实例与jox-1.17b3.jar

    JOX-1.17b3.jar是JOX库的一个特定版本,包含了一系列类和接口,如`JOXBeanOutputStream`,这个类是JOX库中用于将Java对象写入XML流的关键类。通过继承`java.io.OutputStream`,它能够接收Java对象并将其转换为XML...

    解决xmlns设置后继承到子类问题

    在Java编程中,XML(Extensible Markup Language)常用于配置文件、数据交换和对象序列化。当我们在XML文件中设置了命名空间(xmlns),这个命名空间可能会意外地被继承到其子元素,导致不必要的冲突或者非预期的...

    JAVA常用API文档 中文完整版.zip

    10. **XML处理**:DOM(Document Object Model)和SAX(Simple API for XML)是两种常见的XML解析方式,JAXB(Java Architecture for XML Binding)用于将XML数据绑定到Java对象。 这份中文完整版的Java API文档...

Global site tag (gtag.js) - Google Analytics