`

XML与对象映射技术精讲

OXM 
阅读更多

        在学习XML技术之前,先了解下DTD和XML Schema.

        DTD和XML Schema都是用来验证XML文档是否和我们预计的格式一致的。

        DTD是一套关于标记符的语法规则。它是XML1.0规范的一部分。是XML文件的验证机制。属于xml文件组成的一部分,它是一种保证xml文档格式争取的有效方法,可以通过比较xml文档和dtd文档查看文档是否符合规范,以及元素和标签的使用是否正确。

       XML  Schema指定XML  Schema定义语言,该语言提供了描述XML1.0文档结果和限制其内容的工具,其中包括可以利用xml namespace命名工具的工具。模式语言自身用xml1.0表示并使用了名称空间。很大程度上重构了XML 1.0 DTD的能力,解决了DTD的许多局限性,使用的越来越多了起来。

       

      XML文档的读取和处理技术,有两种方法 DOM 和SAX.

      DOM是一次性将整个XML文档结构加载到内存中,成树状结构进行处理。

      SAX是以一种事件驱动方式处理XML,将XML文档从头开始读,读到一个元素,调用相应的事件处理器处理这个元素所带数据,可以随时停止,但灵活性就低了。

      近来又出来了一个基于流的Stream API for XMl方式,综合了两者。不仅提高了XML处理速度,而且很好的兼顾了灵活性。

 

      DOM、SAX、StAX技术都是从XML角度处理文档和建立模型,关注了XML文档结构。

      如果对于只关注XML数据信息,目前针对XML数据绑定出现了一系列框架。如JAXB、JiBX、Quick、Zeus等。

                                                                                                                                                                                                                           

 

 

           XStream开源类库,java对象序列化为XML或者将XML反序列化为Java对象。

  XStream架构组成

  •  Converters(转换器)
         当XStream 遇到需要转换器,它会委派给合适的转换器实现,XStream为通用类型提供了许多转换器实现。
  •  IO(输入、输出)
        XStream通过接口HierarchicalStramWriter 和HierarchicalStramReader从底层XML数据中抽象而来,分别用于序列化和反序列化操作。
  • Context(上下文引用)
      当XStream序列化和反序列化对象时,它会创建两个类MarshallingContext和UnmarshallingContext,由它们来处理数据并委派合适的转换器。
       XStream提供了三种上下文的默认实现,它们之间存在细微的差别。默认值可以通过方法XStream.setMode()调整,可选值为:、
    XStream.XPATH_REFERENCES(默认),通过XPath引用来标识重复的引用
    XStream.ID_REFERENCES;使用ID引用来标识重复的引用
    XStream.NO_REFERENCES;对象作为树形结构,重复的引用被视为两个不同的对象,循环引用会导致异常产生,这种模式速度快,占用内存少。
  • Facade(统一入口)

     作为XStream统一入口点,它将上面所提及的重要组件集成在一起,以统一的接口开放出来。

 

 

     

     使用方式:

     XStream xStream=new XStream(new DomDriver());

     xStream.toXML(Object obj,OutputStream stream);

     Object  obj=xStream.fromXML(InputStream stream);

 

 

    XStream可以通过编码方式对xml进行转换,还支持基于注解的方式进行转换。

    下面对XStream常用注解做出解释说明:

注解 说明 作用目标
@XStreamAlias 别名注解 类、字段
@XStreamAsAttribute 转换成属性 字段
@XStreamOmitField 忽略字段 字段
@XStreamConverter 注入转换器 对象
@XStreamImplicit 隐式集合 集合字段

 

 使用注解方式的写法如下:

    XStream xStream=new XStream(new DomDriver());

    xStream.processAnnotations(Class.class);

    或者自动加载注解Bean

   xStream.autodetectAnnotations(true);

 

   

 

总结:java应用程序的xml数据绑定我们可以归纳为两种方式:

一、根据XML文档文法生成java语言代码(如JAXB、XMLBeans、Castor)

二、是使用某种形式的映射绑定方法,也就是设定java类如何与XML进行关联(如XStream、Castor、JibX)

 

 

     

 

 

     

 

 

       

 

 

 

 

 

 

 

 

 

     

 

       

 

 

分享到:
评论

相关推荐

    xml精讲帮助文档 两个打包

    3. JAXB:Java中的标准库提供了JAXB,用于XML和Java对象之间的映射,简化了XML数据的处理。 四、XML与PHP 1. PHP的XML处理:PHP提供了DOM、SimpleXML、XMLReader等库来处理XML。SimpleXML尤其易于使用,可以直接将...

    Struts2+Spring3+Hibernate框架技术精讲与整合案例 PDF 下载

    这本"Struts2+Spring3+Hibernate框架技术精讲与整合案例"PDF教程,旨在帮助开发者深入理解和实践这三大框架的集成应用。 Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求,提供视图...

    新闻管理系统-Struts 2+Spring 3+Hibernate框架技术精讲与整合案例

    它支持JPA规范,使得开发者可以使用注解或者XML配置来定义对象与数据库表的映射关系。Oracle数据库脚本可能包含了创建新闻表和其他相关辅助表的SQL语句,这些表将与Hibernate映射的Java类对应。 在描述中提到的...

    spring+springmvc+mybatis三大框架整合案例.zip

    6. **配置MyBatis**:创建MyBatis的全局配置文件mybatis-config.xml,以及Mapper接口和对应的XML映射文件。 7. **编写业务逻辑**:实现服务接口,定义DAO接口,编写Mapper XML文件,编写SQL语句。 8. **配置数据库...

    mybatis开发精讲笔记

    MyBatis是一款流行的Java持久层框架,其以XML或注解的方式配置和映射原生信息,将对象与数据库中的记录相互转换。它的前身是Apache开源项目iBatis,后来迁移到Google Code并更名为MyBatis。本文详细讲解了MyBatis的...

    《修炼之道 .NET开发要点精讲》.(周见智、博图轩)__0525).rar

    1. **C#语言基础**:作为标签"C#"所指示的重点,本书会深入讲解C#语言的基础语法,包括变量、数据类型、控制结构(如条件语句、循环)、函数、类与对象、继承、多态等面向对象编程概念。 2. **.NET框架**:.NET框架...

    基于S2SH下的博客系统开发精讲源码

    它提供了对象关系映射(ORM)功能,使得开发者可以使用Java对象来操作数据库记录,减少了与SQL的直接交互。在博客系统中,Hibernate可以方便地管理用户、文章、评论等数据的增删改查操作。 BFblogDemo01很可能是该...

    jsp基础教程精讲 jsp基础教程精讲

    3. **在web.xml中配置Servlet**:通过以下XML结构来声明和映射Servlet: ```xml <servlet-name>ServletName <servlet-class>com.example.MyServlet</servlet-class> <servlet-name>ServletName ...

    SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程

    Mybatis是一个轻量级的持久层框架,它简化了SQL操作,将SQL语句直接写在XML配置文件或注解中,与Java对象进行映射。Mybatis的Executor执行器处理SQL查询,ResultHandler处理查询结果,ParameterHandler处理参数绑定...

    Struts编程基础与实例精讲

    struts-config.xml是配置文件,定义了各个Action的映射和数据流走向。 接下来,我们要掌握Struts的请求处理流程。当用户发起一个HTTP请求时,Struts ActionServlet会捕获这个请求,根据struts-config.xml中的配置...

    Spring+SpringMVC+Mybatis框架整合例子(SSM)

    Mybatis是一个优秀的持久层框架,它简化了数据库操作,通过XML或注解的方式配置和映射SQL,使得开发者能够更加专注于SQL本身,而无需过多关注JDBC的繁琐细节。Mybatis支持动态SQL,可以更灵活地编写查询语句。 在...

    SSM框架-详细整合教程(Spring+SpringMVC+MyBatis).pdf

    它简化了SQL映射和DAO层的开发,允许将Java对象与数据库记录直接映射,避免手动编写大量JDBC代码。 - MyBatis通过XML或注解配置SQL语句,支持动态SQL,提供了强大的映射机制,可以处理复杂的查询和结果集检索。 **...

    Struts2+Spring+Hibernate框架技术与项目实战 源码(中)

    在"Struts2+Spring+Hibernate框架技术与项目实战 源码(中)"这个资料中,我们聚焦于第五篇的内容,这部分涵盖了19到23章的所有光盘代码。这些章节通常会深入讲解如何将这三个框架集成,并通过实际项目进行实战演练。...

    mybatis整合springMvc完整jar包.rar

    通过ResultMap,我们可以设置字段与对象属性的映射规则,使数据能正确地填充到模型对象中。 8. **异常处理**:在SpringMVC中,我们可以配置全局异常处理器,统一处理MyBatis执行SQL时可能抛出的异常,如...

    springmvc系列教程PDF精讲.

    3. **配置文件详解**:讲解`web.xml`配置文件的作用,如何配置DispatcherServlet,以及`servlet-context.xml`中用于配置SpringMVC的Bean定义,包括视图解析器(View Resolver)和映射器(Handler Mapping)等。...

    javaEE编程开发案例精讲 袁梅宇教材所有源代码

    袁梅宇的教材可能通过Hibernate展示了如何将Java对象与数据库表进行映射,以及如何进行CRUD(Create, Read, Update, Delete)操作。 7. Struts:Struts是早期的MVC框架,虽然现在已被Spring MVC取代,但理解其工作...

    Spring&Mybatis&SpringMVC总结笔记-最全最基础.pdf

    编程式事务需要编写代码来管理事务边界,而声明式事务则通过XML配置或注解方式将事务管理与业务逻辑分离。Spring框架的事务管理有其优点,如统一的事务管理API,支持声明式事务以及本地事务和分布式事务。 Spring...

    北风网--基于S2SH下的博客系统开发精讲_数据库脚本

    - 创建Java实体类,对应数据库中的表,并利用Hibernate注解或XML映射文件进行ORM配置。 - 编写Service层和DAO层代码,实现业务逻辑和数据访问操作。 - 使用Struts2的Action类连接控制器和视图,处理用户请求。 -...

    mybatis精讲

    通过`<select>`, `<insert>`, `<update>` 和 `<delete>` 标签,你可以编写各种SQL语句,并通过`resultMap`来定义字段与对象属性的对应关系,实现自动映射。 再来说说MyBatis的动态SQL,这是MyBatis的一大亮点。动态...

    JSP taglib 精讲

    2. **标记库描述符(Tag Library Descriptor,TLD)**:这是一个XML文件,用于定义一组标签处理器,即将它们映射到一个库中。TLD文件通常包含关于各个标签的信息,如名称、属性、作用域等。 #### 如何使用自定义...

Global site tag (gtag.js) - Google Analytics