首页 / 专利库 / 专利权 / 申请 / 基于可变内存预申请及HASH的快速XML解析方法

基于可变内存预申请及HASH的快速XML解析方法

阅读:1072发布:2020-05-31

专利汇可以提供基于可变内存预申请及HASH的快速XML解析方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于可变内存预 申请 及HASH的快速XML解析方法,其包括以下步骤:步骤一:读取XML文档到Xml Content,并生成Document的Xml Root Node 节点 ;步骤二:对Xml Content进行语法分析,解析XML文档;语法分析指示解析部分的分类,进行不同分支的处理;步骤三:若分析结果为Node,则会进入 迭代 算法 ;步骤四:存放Attribute信息,进行兄弟Attribute的关系链接,并进行Node-Attribute关系的链接;步骤五:进行XML文档的任意元素节点的查询。本发明通过可变预申请内存算法提高了XML解析的速度,使得应用能通过配置Hash索引 开关 快速 定位 。,下面是基于可变内存预申请及HASH的快速XML解析方法专利的具体信息内容。

1.一种基于可变内存预申请及HASH的快速XML解析方法,其特征在于,该解析方法包括以下步骤:
步骤一:读取XML文档到Xml Content,并生成Document的Xml Root Node节点
步骤二:对Xml Content进行语法分析,解析XML文档;语法分析指示解析部分的分类,进行不同分支的处理;
步骤三:若分析结果为Node,则会进入迭代算法,通过Xml Free Node Linklist从预申请内存Static Node List中,取出第一个节点,存放Node信息,并进行父子Node关系的链接;对于兄弟关系的Node的连接处理,使用链表方式关联,若Hash索引开关开启,同时根据其Node名称为键值使用Hash进行链接;
步骤四:若分析结果为Node下属的Attribute,则通过Xml Free Attribute Linklist从预申请内存Static Attribute List中,取出第一个节点,存放Attribute信息,进行兄弟Attribute的关系链接,并进行Node-Attribute关系的链接;
步骤五:通过步骤三、步骤四的迭代算法之后,整个XML文档已映射为Document内存树,在此基础上,可进行XML文档的任意元素节点的查询;若Hash索引开关开启,通过Hash索引搜索;若Hash索引开关关闭,通过Document树遍历搜索。
2.如权利要求1所述的基于可变内存预申请及HASH的快速XML解析方法,其特征在于,所述基于可变内存预申请及HASH的快速XML解析方法设置了Static Node List及Static Attribute List两个可变大小的预申请内存用于存放节点信息,具备Hash索引开关,所述每个Xml Node节点由以下元素构成:Node节点的名值信息;首尾子节点;兄弟节点;用于链接管理的前后节点;属性链表;以及用于快速查询的Hash链表。

说明书全文

基于可变内存预申请及HASH的快速XML解析方法

技术领域

[0001] 本发明涉及一种解析方法,特别是涉及一种基于可变内存预申请及HASH的快速XML解析方法。

背景技术

[0002] XML(Extensible Markup Language,可扩展标记语言)是一套使用上规则严谨但是简单的格式化描述数据语言,被广泛用来作为跨平台之间交互数据的形式,在XML文档中,标签按约定的顺序进行嵌套组织,文档必须符合XML的语法规范。
[0003] 为此,针对XML文档的解析技术随即出现了,XML解析是将XML数据从其序列化字符串格式转换为分层格式的过程。现有的XML解析工具,实现了XML文档的解析存储,以及对XML文档的任意标签的读取方法。如TinyXml,是一个使用C++语言编写的开源XML解析库,能够在Windows或Linux中编译使用,公开了一套解析及获取XML文档信息的系统和方法。
[0004] 其中,所述系统原理如下:通过解析XML文件,将文档分解成XML的各种元素,并利用firstchild-nextsibling tree多叉树形结构表示这些元素之间的顺序关系以及嵌套包含关系,在内存中生成DOM模型,即文档对象模型,然后,通过对DOM模型的访问,达到获取XML文档信息的目的。
[0005] TinyXml根据XML的各种元素主要定义了以下类:TiXmlBase:整个TinyXML模型的公共基类;TiXmlNode:DOM树中节点元素的基类型;TiXmlDocument:对应于XML文档整体的一个对象;TiXmlDeclaration:对应XML声明部分的对象;TiXmlComment:对应XML文档中的注释部分;TiXmlElement:对应于XML文档中的普通元素对象,普通元素可有属性,对应于TiXmlAttribute;TiXmlText:对应于XML文档中元素中的文本信息对象。通过以上类,便可由XML文件生成整个DOM模型。
[0006] 现有的XML解析技术存在如下缺陷:在解析XML文档,生成DOM模型的各种元素时,对于每个元素都需要对其进行动态指配内存。
[0007] 该实现方法,尤其当XML文档比较大,或者利用XML文档进行的系统间消息交换较为频繁时,由于频繁动态分配内存而导致的解析文件速度较慢的缺陷便会暴露。
[0008] 另一方面,现有的XML解析技术,在生成DOM模型树时,使用了保存树中的每个节点保存其父节点、前后兄弟节点、首末孩子节点指针的方法,但是,若XML文档存在大量不同元素节点时,读取某一元素节点信息,只能通过从头到尾遍历DOM树的方法,而不是以某种策略进行快速遍历。

发明内容

[0009] 本发明所要解决的技术问题是提供一种基于可变内存预申请及HASH的快速XML解析方法,其提高了XML解析的速度;同时解决了在查询内存树只能通过全遍历的问题,使得应用能通过Hash索引快速定位
[0010] 本发明是通过下述技术方案来解决上述技术问题的:一种基于可变内存预申请及HASH的快速XML解析方法,其特征在于,该解析方法包括以下步骤:
[0011] 步骤一:读取XML文档到Xml Content,并生成Document的Xml Root Node节点;
[0012] 步骤二:对Xml Content进行语法分析,解析XML文档;语法分析指示解析部分的分类,进行不同分支的处理;
[0013] 步骤三:若分析结果为Node,则会进入迭代算法,通过Xml Free Node Linklist从预申请内存Static Node List中,取出第一个节点,存放Node信息,并进行父子Node关系的链接;对于兄弟关系的Node的连接处理,使用链表方式关联,若Hash索引开关开启,同时根据其Node名称为键值使用Hash进行链接;
[0014] 步骤四:若分析结果为Node下属的Attribute,则通过Xml Free Attribute Linklist从预申请内存Static Attribute List中,取出第一个节点,存放Attribute信息,进行兄弟Attribute的关系链接,并进行Node-Attribute关系的链接;
[0015] 步骤五:通过步骤三、步骤四的迭代算法之后,整个XML文档已映射为Document内存树,在此基础上,可进行XML文档的任意元素节点的查询;若Hash索引开关开启,通过Hash索引搜索;若Hash索引开关关闭,通过Document树遍历搜索。
[0016] 本发明的积极进步效果在于:本发明提高了XML解析的速度;同时解决了在查询内存树只能通过全遍历的问题,使得应用能通过Hash索引快速定位;在需解析新的XML文档时,对旧XML文档的内存树不进行内存释放,而是采用清空使用状态的简单高效方法,使得XML解析器具备重用性。附图说明
[0017] 图1为本发明基于可变内存预申请及HASH的快速XML解析方法的流程图

具体实施方式

[0018] 下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
[0019] 如图1所示,本发明基于可变内存预申请及HASH的快速XML解析方法包括以下步骤:
[0020] 步骤一:读取XML文档到Xml Content,并生成Document的Xml Root Node节点。每个Xml Node节点由以下元素构成:Node节点的名值信息;首尾子节点;兄弟节点;用于链接管理的前后节点;属性链表;以及用于快速查询的Hash链表;
[0021] 步骤二:对Xml Content进行语法分析,解析XML文档;语法分析指示解析部分的分类,进行不同分支的处理;
[0022] 步骤三:若分析结果为Node,则会进入迭代算法,通过Xml Free Node Linklist从预申请内存Static Node List中,取出第一个节点(Xml Free Node Linklist指向为空标志所有预申请内存使用完毕,则动态申请内存),存放Node信息,并进行父子Node关系的链接。对于兄弟关系的Node的连接处理,使用链表方式关联,若Hash索引开关开启,同时根据其Node名称为键值使用Hash进行链接;
[0023] 步骤四:若分析结果为Node下属的Attribute,则通过Xml Free Attribute Linklist从预申请内存Static Attribute List中,取出第一个节点(Xml Free Attribute Linklist指向为空标志所有预申请内存使用完毕,则动态申请内存),存放Attribute信息,进行兄弟Attribute的关系链接,并进行Node-Attribute关系的链接;
[0024] 步骤五:通过步骤三、步骤四的迭代算法之后,整个XML文档已映射为Document内存树,在此基础上,可进行XML文档的任意元素节点的查询。若Hash索引开关开启,通过Hash索引搜索;若Hash索引开关关闭,通过Document树遍历搜索。
[0025] 至此,解析及查询XML文档流程结束。本发明中的XML解析方法经初始化后,可对不同的XML文档连续进行解析,在对过期XML文档的释放过程中,采用清空使用状态的方式,进而以同一流程解析及查询下一个XML文档。
[0026] 虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改。因此,本发明的保护范围由所附权利要求书限定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈