[发明专利]基于可变内存预申请及HASH的快速XML解析方法无效
申请号: | 201110324076.6 | 申请日: | 2011-10-21 |
公开(公告)号: | CN103064859A | 公开(公告)日: | 2013-04-24 |
发明(设计)人: | 浦晶 | 申请(专利权)人: | 上海湾流仪器技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 上海智信专利代理有限公司 31002 | 代理人: | 胡美强 |
地址: | 200030 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 可变 内存 申请 hash 快速 xml 解析 方法 | ||
技术领域
本发明涉及一种解析方法,特别是涉及一种基于可变内存预申请及HASH的快速XML解析方法。
背景技术
XML(Extensible Markup Language,可扩展标记语言)是一套使用上规则严谨但是简单的格式化描述数据语言,被广泛用来作为跨平台之间交互数据的形式,在XML文档中,标签按约定的顺序进行嵌套组织,文档必须符合XML的语法规范。
为此,针对XML文档的解析技术随即出现了,XML解析是将XML数据从其序列化字符串格式转换为分层格式的过程。现有的XML解析工具,实现了XML文档的解析存储,以及对XML文档的任意标签的读取方法。如TinyXml,是一个使用C++语言编写的开源XML解析库,能够在Windows或Linux中编译使用,公开了一套解析及获取XML文档信息的系统和方法。
其中,所述系统原理如下:通过解析XML文件,将文档分解成XML的各种元素,并利用firstchild-nextsibling tree多叉树形结构表示这些元素之间的顺序关系以及嵌套包含关系,在内存中生成DOM模型,即文档对象模型,然后,通过对DOM模型的访问,达到获取XML文档信息的目的。
TinyXml根据XML的各种元素主要定义了以下类:TiXmlBase:整个TinyXML模型的公共基类;TiXmlNode:DOM树中节点元素的基类型;TiXmlDocument:对应于XML文档整体的一个对象;TiXmlDeclaration:对应XML声明部分的对象;TiXmlComment:对应XML文档中的注释部分;TiXmlElement:对应于XML文档中的普通元素对象,普通元素可有属性,对应于TiXmlAttribute;TiXmlText:对应于XML文档中元素中的文本信息对象。通过以上类,便可由XML文件生成整个DOM模型。
现有的XML解析技术存在如下缺陷:在解析XML文档,生成DOM模型的各种元素时,对于每个元素都需要对其进行动态指配内存。
该实现方法,尤其当XML文档比较大,或者利用XML文档进行的系统间消息交换较为频繁时,由于频繁动态分配内存而导致的解析文件速度较慢的缺陷便会暴露。
另一方面,现有的XML解析技术,在生成DOM模型树时,使用了保存树中的每个节点保存其父节点、前后兄弟节点、首末孩子节点的指针的方法,但是,若XML文档存在大量不同元素节点时,读取某一元素节点信息,只能通过从头到尾遍历DOM树的方法,而不是以某种策略进行快速遍历。
发明内容
本发明所要解决的技术问题是提供一种基于可变内存预申请及HASH的快速XML解析方法,其提高了XML解析的速度;同时解决了在查询内存树只能通过全遍历的问题,使得应用能通过Hash索引快速定位。
本发明是通过下述技术方案来解决上述技术问题的:一种基于可变内存预申请及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树遍历搜索。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海湾流仪器技术有限公司,未经上海湾流仪器技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110324076.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种分发信息数据库
- 下一篇:一种网站内容信息查询方法及装置