首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于XML的协议动态组包和解析方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:中国电子科技集团公司第三十研究所

摘要:本发明提供一种基于XML的协议动态组包和解析方法,包括:在协议模板的XML文件中定义关键字来表示协议动态组包和解析的交互流程;再通过解析协议模板的XML文件中的关键字来模拟协议动态组包和解析。本发明的有益效果是:1、对于各种自定义协议,只要在协议模板的XML文件中通过关键字对协议格式及业务动作进行定义,即可通过解析XML的关键字实现协议流程交互,即协议动态组包和解析;2、关键字和运算调用的基础函数和业务函数等可根据业务需要进行扩展,兼容性和可扩展性好;3、使用本发明进行实时动态组包和解析,被测设备无需做出任何改动。

主权项:1.一种基于XML的协议动态组包和解析方法,其特征在于,包括:在协议模板的XML文件中定义关键字来表示协议动态组包和解析的交互流程;再通过解析协议模板的XML文件中的关键字来模拟协议动态组包和解析;通过解析协议模板的XML文件中的关键字来模拟协议动态组包的方法包括如下步骤:1根据传入的协议模板名称及数据包名称,从内存中已加载的协议模板数据中通过匹配Package标签找到与传入的数据包名称相同的节点;2依次循环解析数据包节点Package的子节点,根据定义的不同关键字进行不同的操作步骤,输出子节点的组包结果;3当数据包节点Package节点下的所有子节点处理完成后,将每个子节点的组包结果按照协议模板定义的组包方式进行拼接,得到该数据包的组包结果;协议动态组包的方法中,依次循环解析数据包节点Package的子节点,根据定义的不同关键字进行不同的操作步骤,输出该子节点的组包结果的方法包括如下子步骤:2.1若数据包节点Package的子节点的节点名为字段Field,则进入字段处理流程:根据协议模板中定义的字段属性,采用不同的数据生成方式,得到相应的组包结果;2.2若数据包节点Package的子节点的节点名为准备区域PreArea,则进入准备区域处理流程:依次将该准备区域PreArea的所有子节点定义的数据读取到中间变量列表中,以备后续使用;2.3若数据包节点Package的子节点的节点名为私有区域PriArea,则进入私有区域处理流程:依次对该私有区域PriArea的所有子节点进行处理,该私有区域PriArea的子节点为需要运算得出结果的单个字段,将运算结果存入中间变量列表中,仅用于中间数据运算,不计入组包结果;2.4若数据包节点Package的子节点的节点名为标识区域FlagArea,则进入标识区域处理流程:依次对标识区域FlagArea的所有子节点进行处理,并将得到的子节点数据写入一个临时列表中,当该标识区域FlagArea的所有子节点处理完毕后,将临时列表中的子节点数据按照指定的数据拼接方式依次拼接,得到一个组包字符串,存入组包结果;2.5若数据包节点Package的子节点的节点名为保护区域ProArea,则进入保护区域处理流程:依次对保护区域ProArea的所有子节点进行处理,并将得到的子节点数据写入一个临时列表中,当该保护区域ProArea的所有子节点处理完毕后,将临时列表中的子节点数据按照指定的数据拼接方式依次拼接,得到一个组包字符串,在依次处理完所有子节点得到组包字符串之后,根据协议模板的保护区域运算定义,对该组包字符串进行运算,将运算结果作为最后的组包结果;2.6若数据包节点Package的子节点的节点名为循环区域CycArea,则进入循环区域处理流程:该循环区域处理流程包括一个嵌套循环,先根据协议模板定义的循环次数确定外层循环次数,再根据循环区域中子节点的个数确定内层循环次数,在内层循环中依次运算子节点的结果,每个子节点的结果会根据协议模板定义运算出固定结果;当两层循环处理完毕,将所有子节点的固定结果拼接得到循环区域的组包结果;通过解析协议模板的XML文件中的关键字来模拟协议动态解析的方法包括如下步骤:1根据传入的协议模板名称及数据包名称,从内存中已加载的协议模板数据中通过匹配Package标签找到与传入的数据包名称相同的节点;2依次循环遍历数据包节点Package的子节点,对协议模板进行预处理;3协议预处理完成后,再次依次循环解析数据包节点Package的子节点,根据不同关键字进行不同的操作步骤,输出子节点的解析结果,并将解析结果记入解析结果列表中;4数据包节点Package下的所有子节点处理完成后,将解析结果列表中的解析结果按照顺序依次输出到结果文件中,以备用户查看;协议动态解析的方法中,依次循环解析数据包节点Package的子节点,根据不同关键字进行不同的操作步骤,输出子节点的解析结果的方法包括如下子步骤:3.1若数据包节点Package的子节点的节点名为字段Field,则进入字段处理流程:根据字段长度及运算出的字段偏移获取字段实际值,或者根据字段分隔符获取字段实际值;若定义了字段预期值,则根据预期值的字段运算方式获取字段预期值;然后将字段实际值与字段预期值进行比对,若一致则流程继续进行,不一致则输出错误信息并终止解析流程;3.2若数据包节点Package的子节点的节点名为准备区域PreArea,则进入准备区域处理流程:依次将准备区域PreArea的所有子节点定义的数据读取到中间变量列表中,以备后续使用;3.3若数据包节点Package的子节点的节点名为私有区域PriArea,则进入私有区域处理流程:依次对该私有区域PriArea的所有子节点进行处理,该私有区域PriArea的子节点为需要运算得出结果的单个字段,将运算结果存入中间变量列表中,仅用于中间数据运算,不计入组包结果;3.4若数据包节点Package的子节点的节点名为标识区域FlagArea,则进入标识区域处理流程:先根据协议模板定义获取该标识区域FlagArea的数据,再依次对标识区域FlagArea的所有子节点进行处理,并将得到的子节点数据写入一个临时列表中,当该标识区域FlagArea的所有子节点处理完毕后,将临时列表中的子节点数据按照顺序输出一个解析字符串到结果文件的XML文件中,便于用户查看;3.5若数据包节点Package的子节点的节点名为保护区域ProArea,则进入保护区域处理流程:首先,根据保护区域的数据长度获取该保护区域解析前的数据,然后根据保护区域的运算信息子节点CalcInfo中定义的运算信息,将保护区域解析前的数据作为运算函数的输入参数,运算后得到解除保护后的数据;然后将解除保护后的数据按照保护区域的具体字段定义依次解析,得到该保护区域数据的最终解析结果;3.6若数据包节点Package的子节点的节点名为循环区域CycArea,则进入循环区域处理流程:先根据协议模板定义的循环次数,实时动态生成本循环的协议模板,然后再获取循环区域CycArea的数据,并按照实时动态生成的本循环的协议模板,依次解析循环区域CycArea的各子节点,并输出解析结果;3.7若数据包节点Package的子节点的节点名为子模板区域SubArea,则进入子模板区域处理流程:该子模板区域处理流程将根据协议模板定义的子模板名称,实时从内存中已加载的协议模板文件中匹配对应的子模板,然后将匹配到的子模板加入子模板临时列表中,以备后续直接引用;3.8若数据包节点Package的子节点的节点名为选择区域SelArea,则进入选择区域处理流程:通过在协议模板中定义选择条件,及该选择条件下需要跳转的子模板名称,实现协议处理流程的分支判断及处理,满足选择条件则直接从子模板临时列表中匹配对应的子模板进行解析。

全文数据:

权利要求:

百度查询: 中国电子科技集团公司第三十研究所 一种基于XML的协议动态组包和解析方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。