XML Data Binding在OMA WV-IMPS的应用

来源 :电子与电脑 | 被引量 : 0次 | 上传用户:hzuns
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  本文范例是针对复杂的XML程序设计应用,提供部份的程序代码,以解释程序设计观念。本文假设读者已经具备XML APIs与Java程序设计经验。
  
  本文讨论程序设计师使用XML与Java技术,XML Data Binding与传统撰写APIs或公用程序来转换XML文件,从分析XML文件结构、取出数据,以及转换成可用的数据格式的过程。提供国际标准组织开放行动联盟(Open Mobile Alliance;OMA) WV-IMPS,在XML转载无线数据交换讯息应用的范例说明。依据OM-WV-CSP_DTD-V1_1-20021001-A文件所制定的DTD规范而窥探出的复杂程度,包括:使用了多份DTD 约制规则验证XML数据造成结构冲突的问题,以及XML文件格式元素排列的顺序,和元素型别相互成为多层果状且元素型别名称重复…等等复杂的问题与解决方法。
  
  OMA WV-IMPS XML转载无线数据交换讯息简介
  
  WV-IMPS简介
  2001年Ericsson、Motorola、Nokia等手机大厂,共同成立了Wireless Village组织。主旨为制定适合于移动通信网路上使用之IMPS通信协议,使移动设备相互之间,或移动装置与其它通信设备间可以彼此交换实时信息与状态信息。亦即可在移动设备参与者间实时的交换各种媒体内容信息,并且可以实时知道参与者的状态信息,从而选择适当的方式进行交流。
  
  官方网址与规格文件网址
  本文依据OM-WV-CSP_DTD-V1_1-20021001-A文件所制定的规范,说明在XML转载无线数据交换信息的应用。该文件提供DTD约制规则与交易的范例。官方网址http://www.openmobilealliance.org/;DTD规格文件(OM-WV-CSP_DTD-V1_1-20021001-A)网址http://www.openmobilealliance.org/release_program/docs/CopyrightClick.asp?pck=IMPS&file=OMA-WV-PA_DTD-V1_1-20021001-A.pdf。
  
  XML Data Binding基本原理
  
  基本原理
  通常在解析XML数据时,经常利用W3C DOM tree或SAX event-driven APIs来剖析XML文件。程序设计师需要很清楚XML文件的结构,以便处理XML元素名称、字符,和属性…等新增、修改节点数据的操作。
  XML Data Binding技术,其目标就是把一个XML文件模型同一个Java对象导向语言中的对象关联起来。这样程序设计师只需要对这个对象进行操作,并且操作结果就能直接地对映到XML文件档中。
  


  例如我们解析一份递送讯息交易结果的XML文件,取得元素下用户的辨识码节点和屏幕名称节点的数据。如果要进一步处理的子元素数据,程序设计师还需要解析DOM Tree的元素与其子元素,以取得子元素的数据,再将它们转换成适当的Java数据型别。
  
  XML DOM Tree
  如果使用Data Binding技术,那么程序设计师只需获得这个节点所对应的对象模块,如DetailedResult Class,然后处理这个对象模块下UserID和ScreenName成员变量的值;或ScreenName Class,以及处理这个对象模块下SName和GroupID成员变量的值就可以了。如此可以简化解析DOM tree额外的程序代码,提高了程序开发的效率。
  


  
  复杂的XML文件格式在程序设计上的问题与解决方法
  
  依据OM-WV-CSP_DTD-V1_1-20021001-A文件所制定的规范,包括:使用了多份DTD 约制规则验证XML数据造成结构冲突的问题,以及XML文件格式元素排列的顺序,和元素型别相互成为多层巣状且元素型别名称重复…等等复杂的问题,提供说明与解决方法。
  
  使用了多份DTD 约制规则验证XML数据
  
  1. 问题描述:
  依据OM-WV-CSP_DTD-V1_1-20021001-A文件所制定的DTD规范,虽然只有一份DTD文件型别定义檔(Document Type Definitions),却可分为三个部份DTD 的约制规则。为了说明,将此三部份分别归类为WV-CSP-Message元素所包含的部份、TransactionContent元素所包含的Presence部份,和TransactionContent部份中所包含非Presence的部份。这三个部份的约制规则在整合过程中,将因不同DTD的约制规则造成结构冲突的问题。
  
  2. 解决方法:
  使用DTD的条件式区段可以解决整合多份DTD的约制规则所造成结构冲突的问题。条件式区段内包含了二个主要的关键词“INCLUDE”与“IGNORE”,如果条件式区段的关键词是“INCLUDE”,则条件式区段的内容是DTD的一部份;如果条件段的关键词是“IGNORE”,则条件式区段的内容便不属于 DTD 逻辑上的一部份。
  请参考下列“外部Doc Type宣告”内容:
  


  以WV-CSP-Message.dtd来整合下列三份DTD的约制规则文件。
  注:以WV-CSP-Header.dtd描述WV-CSP-Message元素所包含的部份,以WV-CSP-Body.dtd描述TransactionContent元素所包含的部份,以PresenceSubList.dtd描述TransactionContent部份中所包含的Presence部份,并以WV-CSP-Message.dtd来整合此三份DTD的约制规则文件。
  


   宣告;
  


   的宣告;
  


    并且还需要在Java相关的对象模块转换(marshal)为XML文件的程序中,加入Presence交易的判断,并以下面“内部Doc Type宣告”来覆写“外部Doc Type宣告”中条件式区段内关键词“INCLUDE”与“IGNORE”的实体参照设定。如此,上述  


  
  XML文件格式元素型别相互成为多层巣状且元素型别名称重复
  
  1. 问题描述:
  依据OM-WV-CSP_DTD-V1_1-20021001-A文件所制定的DTD规范,XML文件格式元素型别相互成为多层巣状且元素型别名称重复。请参考下面DTD规范的片段:
  


  程序设计师可以依据此DTD规范,撰写对映的Java对象模型(object model),它是持有属性与getter-setter方法的一种Java Bean设计型态的类别。
  但是根据这样的DTD规范,将使得Java程序在解析XML文件至Java object model时;或由Java object model产生XML文件时,容易因为XML元素名称同名造成覆写的错误情形发生。
  


  


  
  2. 解决方法:
  
  ● 解析XML文件至Object Model:
  为避免同名称元素被覆写的情形发生。程序必须能剖析XML元素,取得其下所有子元素的List,然后将XML元素List对映于Java object model。
  


  上述JDOM APIs程序代码,首先取得Result类别object model的实体,并取得DeliveryReport的子元素的List,即Result子元素的List(范例第1至第2行)。然后透过for循环来剖析整个Result List,由resultChild.getName() 来判断是否为Code或是Description子元素。假如是Description元素,则取出该Description元素的字符值,然后设定至Result下Description的属性字段(范例第3至第7行)。
  如果是DetailedResult元素的话,则取得DetailedResult的子元素的List(范例第5行),然后重复上述的方式,透过for循环继续来剖析整个DetailedResult List,取出元素的字符值至相对映的属性字段(范例第8行至39行)。
  
  ● 由Object Model产生XML文件:
  程序设计师通常将欲产出XML文件格式,先设定为Java Properties组态档案的格式注3,然后程序直接转换成XML文件。为避免同名称元素被覆写的情形发生,必须将组态档案中每一个XML元素的型别名称,储存成类似XML位置路径的常数变量,然后程序转换对映于Map后,再转成XML文件。使得在解析XML文件时,能辨识每一个XML元素,使产出数据验证正确。
  


  
  XML文件格式元素顺序排列的限制
  
  1. 问题描述:
  依据OM-WV-CSP_DTD-V1_1-20021001-A文件所制定的DTD规范,元素宣告定义XML文件各子元素间出现顺序。程序设计师通常将欲产出XML文件格式,以Java组态档案的格式,对映至Java程序的 HashMap注1,然后再转换为XML文件。由于HashMap不保证数据依照置入Map的顺序储存数据,使得在对象模块转换为XML文件时,不能符合各子元素间出现顺序的限制。
  
  2. 解决方法:
  程序的 LinkedHashMap,并且依照XML文件各子元素间出现顺序,从Java相关的对象模块数据置入LinkedHashMap中。然后将对象模块转换为XML文件,即符合各子元素间出现顺序的限制。
  


  注:程序设计师通常使用java.util.Properties或java.util.ResourceBundle Class存取组态档案,但是其数据结构是使用Hashtable作为储存方式,不保证依照数据置入的顺序储存。
  
  框架程序设计的应用
  
  说明
  本文提供Castor XML Mapping对于XML Data Binding设计,解析XML文件至Object Model的应用实例。 Castor Framework是开放式源码,支持Java-to-XML 数据系结,与Java-to-SQL Persistence数据库应用设计注2。相关文件说明,请参考Castor官方网址http://www.castor.org;与Castor XML Mapping文件网址http://www.castor.org/xml-mapping.html。
  
  Castor Framework的应用实例
  本范例说明使用Castor XML Mapping对映档,以解析XML文件至Java对象模型的应用。
  


  注:1.Java 语言的 XML 数据系结框架程序有:JAXB、JiBX、Castor、JBind、Quick 和 Zeus等等。
  2.Castor 亦提供Source code generator工具,依照设计人员所提供的XML Schema 檔,
  自动产生Java的对象模型。请参考Wrox Press Ltd. 专业XML程序设计 第二版第十五章 XML资料系结,或Castor官方网站相关说明。
  首先我们依据上述的DTD规范,撰写对映的Java对象模型(object model),持有属性与getter-setter方法注3类别。
  


  然后我们需要撰写Castor对映档。Castor对映档也是XML文件档,用来描述Java对象模型与XML文件如何产生关联的信息。
  


  Castor对映档遵循一份XML的约制规则“http://castor.exolab.org/mapping.dtd“,以<mapping>元素包含类别的对映,并使用<include>含括其它相关的对映档。
  类别的对映以<class>元素指定类别的完整套件名称,并包含多个属性字段对映。使用<map-to>元素指定类别名称对映至XML元素。
  


  


  字段的对映则以<field>元素指定,描述字段名称与型态。并且以<bind-xml>元素指定字段对映为所指定的名称;使用node属性指明该字段对映类型为element(或是attribute、text)。
  


  <bind-xml>元素亦提供location属性,用来指明该字段所对映至XML binding,表示由被指定的XML元素所含括(wrapping)。
  


  当完成上述对映的Java对象模型与Castor 对映文件后,接着使用Castor 对映檔进行解析XML文件至Java对象模型的程序代码(Unmarshal)。
  首先汇入Castor套件,并载入mapping文件(下页范例,第1至第5行)。加载mapping后,接着将使用Java类别DeliveryReportRequestPrimitive.class 建立unmarshaller(范例第6至第7行),并由unmashal处理所传入的XML Stream对象(范例第10至第12行)。
  


  
  结论
  
  一般来说,程序设计师常常使用SAX、DOM、JDOM等XML的APIs,对XML文件的架构与内容进行分析与应用。但是使用这样的APIs程序来处理上述复杂,或规模较大的XML文件时,需要投入较多的精力。尤其在维护这部份的程序代码相当乏味,并且因着XML文件结构复杂度增长,非常容易造成程序设计人员的疲乏而产生错误。
  使用Castor 框架程序设计,可以解决复杂的XML的APIs程序设计的问题。Castor 框架程序设计,可以使我们将焦点集中在使用XML文件中的数据,将原本需要撰写应用程序来分析XML文件结构、存取数据,并转换成可用格式的烦人的剖析工作,变成非常便利的任务,使程序设计简化,因而更有效地使用数据数值。
  
  参考文献
  ● OMA官方网址http://www.openmobilealliance.org/
  ● Castor官方网址http://www.castor.org/
  ● IBMdeveloperWorks 中国网站编辑组网址http://www-128.ibm.com/developerworks/cn/xml/theme/x-java.html
  ● O’Reilly & Associates, Inc. - 『XML与Java第二版 Java and XML, 2/e』 -第七章JDOM,第十五章 数据系结接口
  ● Pearson Education Taiwan Ltd. - 『XML与Java-开发WEB应用程序 第二版 XML and Java Second Edition Developing Web Applications』 - Chapter 8 数据结构与XML的桥梁,Chapter 15 资料系结
  ● Wrox Press Ltd. - 『专业XML程序设计 第二版 PROCESSIONAL XML 2nd Edition』 - 第十五章 XML资料。
其他文献
本篇文章是在讲宽频CMOS开关的文章  包括定义、与传统类比CMOS开关的比较、设计的技术应用,到应用的领域等等都包含在内。    问:什么是电容传感器?    答:当某物体或是某人接近或者碰触到传感器时,电容传感器会侦测到电容值的变化。此项技术已经在业界的应用领域上使用多年,它可以用来量测液体位准、湿度、以及物质成分。  一个将会受到广泛使用的较新应用领域,是使用在人机接口上。机械式的按钮、开关
期刊
一个成功的品牌,赋予商品生命力,拥有属于自己的特征,突显出与竞争产品区隔的创意与概念。品牌所塑造出的形象,随着时间的演进,往往成为一种不易撼动的社会地位象征,也培养出一批死忠的品牌精神拥护者。瑞典国宝Volvo,无论从1927年推出的第一辆汽车开始,到最新世代的S80也好,安全绝对是VOLVO一直以来所坚持。这一个信念不仅展现在汽车上,在落实于位在瑞典Gothenburg的Volvo大本营。   
期刊
ZiLOG近日推出公司得奖的eZ80Acclaim系列8位MCU的新成员:一款针对互联网和局域网应用,为了网络通信而设计的增强型MCU-- eZ80F91AZA50(LQFP)或eZ80F91NAA50(BGA)。这款eZ80Acclaim!系列中最新的成员增强了I/O口性能的寄存器、改进了针对低电源消耗的电源控制、升级了闪存功能以减少代码量,有助于加速产品上市时间。有LQFP和BGA两种封装类型
期刊
单片射频微波集成电路技术与设计    内容提要:  RFIC和MMIC技术为许多微波/毫米波通信、雷达、传感等系统提供了关键的核心元器件。最近几年来,这些技术得到快速发展和巨大进步,已经开发出工作频率超过200 GHz的电路、微机械加工的毫米波天线阵列和微机电系统,等等。同时,1~6 GHz频率范围的无线通信应用及市场的快速增长,已经戏剧性地将这一技术的重点转向高级硅技术。因此,现在已是推出这本全
期刊
一. H.264/AVC发展史    随着计算机硬设备成本下降以及普及化,渐渐地,多媒体应用的需求越来越大。加上近年来,3G以及Wireless network发展迅速,因此高效率以及高质量的影像压缩技术越来越受到大众的关注。有鉴于此,国际两大组织ITU-T以及ISO/IEC的MPEG从1993年起也制定了许多影像压缩标准。直到2001年时,MPEG与ITU-T合作成立一个新的单位Joint Vi
期刊
     
期刊
10 GbE的关键驱动要素之一就是对链接合并通信协议的使用加以限制,以便将多重的1GbE链接合并起来。LAG通常是在现有以太网络技术的速度与下一阶段以太网络技术的更高速度,对两者之间所存在的落差作为桥接之用的过渡阶段。10GbE与前一代的以太网络共同分享了许多的相同点,但是也有着一些关键性的差异。就10 GbE标准的本身而言,许多的差异是与传输媒体有关的,但是为了要达到真正的10 GbE效能,系统
期刊
今年第二季三星市占率重新回升到27%左右,力保DRAM市场龙头宝座,拉开与海力士的距离    根据集邦科技(DRAMeXchange)第二季DRAM厂销售额排名调查,2007年第二季全球DRAM品牌厂商销售额较去年第一季下滑24.4%(Figure-2)。受到Q207 DDR2 512Mb价格相较今年第一季大幅度下跌40%以上影响,Q207 全球DRAM产业的产值大幅下降。尽管第二季DRAM价格大
期刊
北京第五日IC设计培训中心独家推出数字集成电路前端设计就业班、数字集成电路前端设计提高班、模拟集成电路前端设计实战提高班。    一、 数字集成电路前端设计就业班    在最短的时间里让学员学习数字IC设计流程,设计方法,常用EDA工具,更以实际专题项目带领学员完成一个从最初的设计规范到门级网表实现的整个前端设计流程,手把手带领学员完成实际项目作品,使学员在领会IC设计知识的同时具备IC设计经验
期刊
随着视频娱乐系统对3D效能、高分辨率输出的需求确立,XDR这种专门为此类应用而设计的新世代高速内存技术出货量也开始获得业界看好。根据XDR技术授权厂商Rambus日前所发表的新闻稿,XDR内存的累计出货量已经超过2500万颗,而且包含三星、尔必达、奇梦达等主要内存供货商都已经开始量产XDR内存颗粒。业界的普遍支持,使得XDR技术成为高速内存领域一个不可忽视的势力。    XDR─内存技术中的效能王
期刊