Java+XML绑定技术.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JavaXML绑定技术

Java XML绑定技术 --- 快速操作XML文档 注:本文系原创,转载请注明作者 -------- 叶瑞金 2009/06/10 在开发中,我们常用XML来存储一些数据。相对于普通的文本文件,XML具有开放性、支持多语言编码、支持结构性数据等优越性,我们常用它存储配置信息,甚至直接使用它当作数据库使用。 最近由于项目需要,我对Java XML绑定技术作了些研究,现在把一些心得与大家分享一下。 其实用Java读写XML的技术由来已久,比如Apache的XML API、xalan、xerces都是很出名的项目,都有将近十多年历史了吧。这些API对XML的操作都是基于XML最底层的DOM和SAX模式,本来也不算很复杂。我在以前项目中很多关于配置文件的管理部分都是用这些API来完成的。但不管是用DOM还是SAX,都要求XML的格式是预先定义好的。也就是说,如果你已经写好了一份读写XML的程序,之后如果这个XML的格式作了修改,那么你必须修改程序,以保证能够正确地从修改后的XML中读写数据。如果XML的格式很复杂,或者牵涉的XML文件类型众多,那么这种修改将是一个浩大的工程。 如果我们能找到一种自动适应XML格式的方法,能够根据当前XML的格式定义,自动地读写XML中的数据,那么就可以节省我们很多精力和时间。可以把这种技术称为XML绑定技术(XML Binding),或者称为Object XML。真的有这样的程序或框架吗? 我们可以用下面的图示来描述Java XML绑定技术: Person ---------------------------- Person |----- id ---------------------------- id123/id |___ name ---------------------------- nametom/name /Person 使用这种绑定技术可以在Java对象和XML文档之间自由地转换。比如你可以把一个XML文件转换成Java对象,然后你读取Java对象中的数据,实际上就是读取XML文档中的数据。或者当你把数据放入Java对象时,实际上是在更新XML文档。对于Java开发人员而言,有了这种绑定技术,你面对的不再是繁琐的XML文档,而是操作快捷的Java对象。这样是不是方便很多呢? 现在确实已经有一些可以完成这个任务的优秀框架。比如:JAXB、XMLBeans、Castor等等。 我最早接触的就是Castor(大约是2004年就有了Castor 0.9版)。Castor本身是一个开源的JDO框架。它的配置文件都是用XML定义的。为了能够使配置文件更加灵活,它的设计者实现了XML----Java Bean的绑定技术。它主要用于快速从XML读取JDO的配置信息。但它所采用的绑定方式不太好用, 开发者不能自己定义XML格式,必须由Castor自己生成。在使用Castor XML时,开发者先定义好要绑定的Java Bean程序,然后运行Castor的命令行程序,生成对应的XML的定义。用户不能自行定义或修改XML的定义,是Castor的一大缺陷。不过对于Castor的目标来说,这不算什么,因为它本来就不是为了做XML绑定而产生的。因为这个原因,Castor XML绑定技术并没有得到广泛应用。但有一点可以肯定的是,Castor能够在JDK 1.3上完成XML的绑定操作,这是其它的几种框架都不能做到的。 相比Castor而言,JAXB和XMLBeans都是比较新的框架,更加灵活,已经可以根据用户自定义的XML来产生对应的读写程序。在使用前用户需要先定义好XML的格式信息,并把这些信息保存在XSD文件中(XSD也是一种XML文件,专门用于定义XML的格式)。然后,用户执行由框架提供的命令行程序,生成相应的读写程序。之后,用户就可以使用生成的程序来操纵XML了。 典型的XSD文件如下所示: ?xml version=1.0 encoding=UTF-8? xs:schema targetNamespace=/COREC/datatype xmlns:xs=/2001/XMLSchema xmlns:tns=/COREC/datatype xs:complexType name=PersonType xs:sequence xs:element name=id type=xs:string minOccurs=0 maxOccurs=1/ xs:el

文档评论(0)

yaobanwd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档