- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于XML的数据解析软件设计与实现.doc
基于XML的数据解析软件设计与实现
摘要:在开展数据处理和数据分析的工作前,常常需要对采集的原始数据进行解析处理,常规的方法是针对大量的数据接口分别开发解析代码,这样做不仅工作量大,代码冗余度高,日后对接口进行修改或添加时都需要同步修改解析程序的相应代码,给数据分析处理工作带来极大的困难。为了有效解决这一问题,该文提出了一种基于XML的数据解析方法,实现接口定义和程序编码的隔离,能够在不改动程序代码情况下,实现数据接口的按需添加或修改,有利于节约后期针对解析程序的开发和维护成本。
关键词:XML;数据解析;隔离;接口
中图分类号:TP319 文献标识码:A 文章编号:1009-3044(2014)01-0057-03
1 概述
在日常软件工程中为了优化或者增加新功能往往需要对数据接口进行修改或删减。这时数据记录设备记录下来的数据格式也会随之发生改变。对于事后的数据分析处理工作来说,这意味着数据解析的开发工作会伴随着数据接口的改变而一直进行。经常出现的一种情况就是进行数据解析时程序报错,进行错误定位之后发现是数据格式发生了变化,于是需要对相应的数据接口进行代码开发或更改,这给数据解析工作带了很大的不便,降低了数据分析的效率,也加大了数据解析和分析出错的几率。
2 解决办法
可扩展标记语言(Extensible Markup Language, XML)是一种用于描述数据与平台无关的语言,以一种开放的自我描述方式定义数据结构,在描述数据内容的同时突出对结构的描述,是一种存储结构化数据的规范[1-2]。XML是一种元标记语言, 可以用来定义其他的标记语言, 并且这些标记语言的元素标记是由用户自己定义的。所以由XML可以派生出无限多种标记语言。在这些标记语言必须根据一定得规则来定义和组织,但是这些标记在其含义上是非常灵活的[3]。
本文使用XML对接口数据进行映射,不在程序代码中对数据接口进行“硬编码”,之后针对XML生成文件解析指令序列,最后按照指令序列对数据文件进行解析,把解析程序代码与接口定义进行隔离,从而使数据接口的更改对解析程序代码的影响降到最低。
3 程序设计
3.1 XML与数据结构映射
待解析的数据都是由网络报文记录而成的二进制文件,报文内容如图1所示。
如图1所示,最前面的数据是消息代码,用来标识消息类型,之后是消息长度,用来标识消息之间的边界位置。通过这两个值我们可以识别和解析数据文件中的所有二进制数据的内容。对于上述数据,我们可以用数据结构(struct)或类(class)来进行抽象。如下面C++代码所示:
struct Header
{int messagetype;
int length;
char spare[4]
};
struct DataTypeA
{Header head;
int A;
int B
};
接口数据类型DataTypeA包括了消息头结构和消息体数据A和B。消息头包括了消息类型消息长度和一些其他数据以及保留数据空间。
进一步可以用XML对其进行表示,如下所示:
DataTypeA
上面的XML中ID表示数据项名称。Array表示是否为数组,如果Array的值是1,则表示单个数据项,如果大于1,则表示一个数组。Style表示是否为嵌套的数据结构,如果值为“element”表示不是数据结构,如果值为“structure”则表示是数据结构,需要从XML中另行查找它的具体定义。 从上面XML中可以看出,这里定义了两类数据结构,一类是HEADER数据结构,另一类是DataTypeA数据结构,而DataTypeA数据结构又嵌套了HEADER数据结构。这与前面的C++代码是一致的。通过上面的步骤,我们建立了一种二进制接口数据到XML的映射。
3.2 文件解析指令序列 对数据接口进行XML映射之后,程序代码就可以与具体的数据接口定义进行隔离了,从而实现数据接口变化不影响程序代码的目标。为了实现程序代码与数据接口隔离,程序将根据XML文件的内容生成一系列的数据解析指令。 这里的指令序列指的是由一系列文件读取的长度和数据类型组成的序列,如下表1所示:
表1 数据解析指令序列
[接口类型\数据名称\数据类型\DataTypeA\MESSAGE_TYPE\int\MESSAGE_LEN\int\MESSAGE_SPARE\char\MESSAGE_SPARE\char\MESSAGE_SPARE \char\MESSA
您可能关注的文档
最近下载
- 手足口病诊疗指南(2024版) .pdf VIP
- 北师大版二年级上册数学第三、四单元能力达标测试卷.docx VIP
- 高中英语人教版必修第一册词汇表单词英译汉默写.pdf VIP
- 2025年安徽理工大学教师招聘考试笔试模拟试题及答案解析.docx VIP
- 常用药物剂型特点和合理科学应用.pptx VIP
- 化学-2025步步高化学一轮复习讲义(上册).pdf VIP
- 环境科学与工程专业英语第三版钟理课文翻译3.16.docx VIP
- T_CACM 1619—2024(儿童厌食中医诊疗指南).pdf VIP
- 缺血性脑血管病2021继续教育答案.pdf VIP
- 钢铁工业课题研究论文(五篇):中水处理技术中钢铁工业应用、钢铁工业的废水处理技术….doc VIP
文档评论(0)