基于xml数据解析软件设计和实现

基于xml数据解析软件设计和实现

ID:6073750

大小:27.50 KB

页数:6页

时间:2018-01-02

基于xml数据解析软件设计和实现_第1页
基于xml数据解析软件设计和实现_第2页
基于xml数据解析软件设计和实现_第3页
基于xml数据解析软件设计和实现_第4页
基于xml数据解析软件设计和实现_第5页
资源描述:

《基于xml数据解析软件设计和实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于XML数据解析软件设计和实现  摘要:在开展数据处理和数据分析的工作前,常常需要对采集的原始数据进行解析处理,常规的方法是针对大量的数据接口分别开发解析代码,这样做不仅工作量大,代码冗余度高,日后对接口进行修改或添加时都需要同步修改解析程序的相应代码,给数据分析处理工作带来极大的困难。为了有效解决这一问题,该文提出了一种基于XML的数据解析方法,实现接口定义和程序编码的隔离,能够在不改动程序代码情况下,实现数据接口的按需添加或修改,有利于节约后期针对解析程序的开发和维护成本。关键词:XML;数据解析;隔离;接口中图分类号:TP319文献标识码:A文章编号:1009-3044

2、(2014)01-0057-031概述6在日常软件工程中为了优化或者增加新功能往往需要对数据接口进行修改或删减。这时数据记录设备记录下来的数据格式也会随之发生改变。对于事后的数据分析处理工作来说,这意味着数据解析的开发工作会伴随着数据接口的改变而一直进行。经常出现的一种情况就是进行数据解析时程序报错,进行错误定位之后发现是数据格式发生了变化,于是需要对相应的数据接口进行代码开发或更改,这给数据解析工作带了很大的不便,降低了数据分析的效率,也加大了数据解析和分析出错的几率。2解决办法可扩展标记语言(ExtensibleMarkupLanguage,XML)是一种用于描述数据与平台

3、无关的语言,以一种开放的自我描述方式定义数据结构,在描述数据内容的同时突出对结构的描述,是一种存储结构化数据的规范[1-2]。XML是一种元标记语言,可以用来定义其他的标记语言,并且这些标记语言的元素标记是由用户自己定义的。所以由XML可以派生出无限多种标记语言。在这些标记语言必须根据一定得规则来定义和组织,但是这些标记在其含义上是非常灵活的[3]。本文使用XML对接口数据进行映射,不在程序代码中对数据接口进行“硬编码”,之后针对XML生成文件解析指令序列,最后按照指令序列对数据文件进行解析,把解析程序代码与接口定义进行隔离,从而使数据接口的更改对解析程序代码的影响降到最低。3

4、程序设计3.1XML与数据结构映射待解析的数据都是由网络报文记录而成的二进制文件,报文内容如图1所示。6如图1所示,最前面的数据是消息代码,用来标识消息类型,之后是消息长度,用来标识消息之间的边界位置。通过这两个值我们可以识别和解析数据文件中的所有二进制数据的内容。对于上述数据,我们可以用数据结构(struct)或类(class)来进行抽象。如下面C++代码所示:structHeader{intmessagetype;intlength;charspare[4]};structDataTypeA{Headerhead;intA;intB};接口数据类型DataTypeA包括了消

5、息头结构和消息体数据A和B。消息头包括了消息类型消息长度和一些其他数据以及保留数据空间。进一步可以用XML对其进行表示,如下所示:DataTypeA6上面的XML中ID表示数据项名称。Array表示是否为数组,如果Array的值是1,则表示单个数据项,如果大于1,则表示一个数组。Style表示是否为嵌套的数据结构,如果值为“element”表示不是数据结构,如果值为“structure”则表示是数据结构,需要从XML中另行查找它的具体定义。从上面XML中可以看出,这里定义了两类数据结构,一类是HEADER数据结构,另一类是DataTypeA数据结构,而DataTypeA数据结构

6、又嵌套了HEADER数据结构。这与前面的C++代码是一致的。通过上面的步骤,我们建立了一种二进制接口数据到XML的映射。3.2文件解析指令序列6  对数据接口进行XML映射之后,程序代码就可以与具体的数据接口定义进行隔离了,从而实现数据接口变化不影响程序代码的目标。为了实现程序代码与数据接口隔离,程序将根据XML文件的内容生成一系列的数据解析指令。这里的指令序列指的是由一系列文件读取的长度和数据类型组成的序列,如下表1所示:表1数据解析指令序列[接口类型\&数据名称\&数据类型\&DataTypeA\&MESSAGE_TYPE\&int\&MESSAGE_LEN\&int\&M

7、ESSAGE_SPARE\&char\&MESSAGE_SPARE\&char\&MESSAGE_SPARE\&char\&MESSAGE_SPARE\&char\&A\&int\&B\&int\&]之后我们就可以根据上述指令序列对待解析的文件进行解析读取。3.3XML文件处理流程为了生成文件解析指令序列,我们需要对XML文件进行处理。XML文件的处理流程如下图2所示,首先读取DataTypeA对应的XML文件,然后定位到定义DataTypeA的节点,之后循环处理DataTypeA的子节点。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。