一种大体积XML报文的解析方法技术

技术编号:9276558 阅读:258 留言:0更新日期:2013-10-24 23:31
本发明专利技术公开了一种大体积XML报文的解析方法,属于信息处理技术领域。所述方法包括:当报文的长度超过预设长度时,上位机将报文拆分为多个包,通过指令下发给解析装置,解析装置接收到所述指令后,获取指令中的包,根据解析装置中保存的当前环境变量,执行相应的操作,指令解析完毕后更新当前环境变量,如果所述指令为报文的最后一包,则向上位机返回报文解析成功的响应,如果所述指令不是报文的最后一包,则向上位机返回包解析成功的响应,继续等待上位机发送下一包。采用本发明专利技术的技术方案,很好的解决了大体积报文的解析问题,而且不需要占用较大的缓存区,能够减少内存的占用。

【技术实现步骤摘要】

【技术保护点】
一种大体积XML报文的解析方法,其特征在于,包括:当报文的长度超过预设长度时,上位机将所述报文拆分为多个不超过预设长度的包,通过指令将每个包下发给解析装置,解析装置执行以下操作:S1、解析装置等待接收上位机发送的指令,对接收到的指令进行解析,从所述指令中获取包和包的长度,将所述包的第一个字符作为当前字符;S2、所述解析装置获取所述解析装置中保存的环境变量中的主状态,是初始态则执行步骤A1;是开始标签态则执行步骤B1;是结束标签态则执行步骤C1;A1、所述解析装置判断当前字符,如果是第一字符,则更新当前字符,执行步骤A2,否则向上位机返回包格式错误的响应;A2、所述解析装置判断当前字符,如果属于预设合法标签字符集,则将主状态置为开始标签态,将子状态置为标签名态,返回执行步骤S2,如果是第二字符,则将主状态置为结束标签态,返回执行步骤S2,否则向上位机返回包格式错误的响应;B1、所述解析装置获取环境变量的子状态,如果是标签名态,则执行步骤B2,如果是属性态,则获取环境变量的子属性状态,如果子属性状态为属性名前态,则执行步骤B3;如果子属性状态为属性名态,则执行步骤B4;如果子属性状态为属性值前态,则执行步骤B5,如果子属性状态为属性值态,则执行步骤B6;B2、解析装置判断当前字符,如果属于预设合法标签字符集,则将当前字符保存在第一预设存储区中,更新当前字符,继续执行步骤B2;如果是第三字符,则将子状态置为属性态,子属性状态置为属性名前态,执行步骤B3;如果是第四字符,则将主状态置为初始态,更新当前字符,执行步骤S2,否则向上位机返回包格式错误的响应;B3、解析装置更新当前字符,判断当前字符是否属于预设合法标签字符集,是则将当前字符保存在第二预设存储区中,将子属性状态置为属性名态,更新当前字符,执行步骤B4,否则向上位机返回包格式错误的响应;B4、解析装置判断当前字符是否为第五字符,如果是,则将子属性状态置 为属性值前态,更新当前字符,执行步骤B5,否则更新当前字符,继续执行步骤B4;B5、解析装置判断当前字符是否为第六字符,如果是,则将子属性状态置为属性值态,更新当前字符,执行步骤B6,否则向上位机返回包格式错误的响应;B6、解析装置判断当前字符是否属于预设合法标签字符集,如果不是,则向上位机返回包格式错误的响应,如果是,则判断第二预设存储区中的内容是否符合预设显示字符,是则先将当前字符保存在显示存储区中,后执行步骤B7,否则执行步骤B7;B7:解析装置更新当前字符,判断当前字符是否为第七字符,如果不是,则向上位机返回包格式错误的响应,如果是,则将子属性状态置为属性名前态,更新当前字符,判断当前字符是否为第四字符,如果是,则将主状态置为初始态、子状态置为标签名态,返回执行步骤S2,否则向上位机返回包格式错误的响应;C1、所述解析装置判断当前字符,如果属于预设合法标签字符集,则将当前字符保存在第三预设存储区中,更新当前字符,继续执行步骤C1;如果是第四字符,则执行步骤C2;C2、所述解析装置判断第三预设存储区中的内容与第一预设存储区中最后保存的内容是否相同,是则将第一预设存储区中最后保存的内容和第三预设存储区中保存的内容删除,并将环境变量置为初始态,更新当前字符,返回执行步骤S2,否则将第一预设存储区和第三预设存储区清空,并向上位机返回包格式错误的响应;所述更新当前字符之前包括:所述解析装置判断已解析的字符数是否达到所述包的长度,如果是,则判断所述包是否为所述指令的最后一包,如果是最后一包,则向上位机返回报文解析成功的响应,如果不是最后一包,则向上位机返回包解析成功的响应,返回执行步骤S1,否则执行所述更新当前字符的操作。...

【技术特征摘要】

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:飞天诚信科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1