zoukankan      html  css  js  c++  java
  • Castor以及Java和XML数据绑定

    XML作为一种semi-structure的数据模式,想对于数据库和free text,现在已经成为事实上的web数据交换标准了。相对于数据库,XML更容易使用网络进行传输。数据交换的目的是为了使用,Java是我的最爱了。如果能够将xml文件里面的数据直接转化为一个java类并将数据值赋给类里面的变量,从而构造出一个类的实例(object),那么对xml的操作就变成了对这个object的操作,非常方便。同样,如果你有一个object,将它转化成为一个xml文件,将非常利于数据的保存和传输。

    最近接触了castor,一个XML的数据绑定的工具,就稍微研究了一下。“数据绑定 提供了一种简单而直接的方法,以在 Java 平台应用程序中使用 XML。有了数据绑定,应用程序可以在很大程度上忽略 XML 文档的实际结构,而直接使用那些文档的数据内容。虽然这种方法不能适合于所有应用程序,但在一般情况下,对于那些将 XML 用于数据交换的应用程序是比较理想的。除了简化编程之外,数据绑定还提供了其它一些好处。 由于数据绑定对许多文档细节进行了抽象,因此对于在内存中处理文档,它通常所需要的内存比文档模型方法(譬如 DOM 或 JDOM)要少。您还会发现,由于不需要遍历文档结构以获取数据,因此用数据绑定方法访问程序内的数据要比用文档模型方法快。最后,在输入时,一些特殊类型的数据(譬如数字和日期)可以被转换成内部表示,而不是保留为文本形式;这使应用程序可以更有效地使用数据值。”【1】

    这里主要谈一下castor,其实JXAB才是Java的“官方”版,还有JBind、Quick 和 Zeus。他们的比较请参考【1】。

    首先需要了解xml的schema,还有绑定时常用的两个术语:

    编组(Marshalling)是在内存中为对象生成 XML 表示的过程。与 Java 对象序列化一样,这种表示需要包含所有依赖的对象:我们的主对象引用的对象、这些对象引用的对象等等。 

    数据分解(Unmarshalling) 是与编组相反的过程,在内存中根据 XML 表示构建一个对象(而且可能是链接对象的图)。

    这两个术语也用在了java的序列化中,个人认为xml的数据绑定似乎是序列化的一个特殊形式。

    具体的例子参考【2】,给出了详细的安装和测试,其中还提到了mapping和绑定到数据库。过几天有时间我会翻译一下这个教程并更新这篇文章。

    参考:

    【1】Java 中的 XML: 数据绑定:http://www.ibm.com/developerworks/cn/xml/x-databdopt/part1/

    【2】Data binding with Castor 1~4: http://www.ibm.com/developerworks/xml/library/x-xjavacastor1/

    【3】《Java与XML数据绑定》http://oreilly.com.cn/book.php?bn=7-5083-1313-5

    【4】http://en.wikipedia.org/wiki/XML_data_binding

  • 相关阅读:
    一张图片入门Python
    4.1. 如何在Windows环境下开发Python
    你必须知道的EF知识和经验
    XUnit的使用
    如何使用NUnit
    Entity Framework 不支持DefaultValue
    Have You Ever Wondered About the Difference Between NOT NULL and DEFAULT?
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Entity Framework 与多线程
    sqlite中的自增主键
  • 原文地址:https://www.cnblogs.com/ainima/p/6331351.html
Copyright © 2011-2022 走看看