[发明专利]一种可扩展标记语言解析方法及装置在审
申请号: | 201611104087.2 | 申请日: | 2016-12-05 |
公开(公告)号: | CN106598578A | 公开(公告)日: | 2017-04-26 |
发明(设计)人: | 王祺 | 申请(专利权)人: | 沈阳中科创达软件有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F17/30 |
代理公司: | 北京品源专利代理有限公司11332 | 代理人: | 孟金喆,胡彬 |
地址: | 110167 辽宁省沈阳市东陵区上*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 扩展 标记 语言 解析 方法 装置 | ||
技术领域
本发明实施例涉及一种智能终端技术,尤其涉及一种可扩展标记语言解析方法及装置。
背景技术
可扩展标记语言(Extensible Markup Language,XML)是W3C组织于1998年2月发布的标准。可扩展标记语言作为全球通用的半结构化的数据模型,它的应用领域己广泛涉及出版、电子商务、企业协作以及Web服务等方而由于可扩展标记语言具有跨平台、简单易用等特性,在很短的时间内就获得了广泛认同,其应用领域不断地得到拓展,已成为一种被大量使用的通用数据格式。
SAX,全称Simple API for可扩展标记语言,既是一种接口,也是一种软件包。它是一种可扩展标记语言解析的替代方法。它逐行扫描文档,一边扫描一边解析。由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,这对于大型文档的解析是个巨大优势。然而SAX只能对文件按顺序剖析一遍,不支持对文件的随意存取。并且它只能读取可扩展标记语言文件内容,不能修改可扩展标记语言文件内容。开发上也比较复杂,需要自己制作事件处理器。
文档对象模型(Document Object Model,DOM)是W3C组织推荐的处理可扩展标志语言的标准编程接口。使用DOM对可扩展标记语言文件进行操作时,首先要解析文件,将文件分为独立的元素、属性和注释等,然后以节点树的形式在内存中对可扩展标记语言文件进行表示,就可以通过节点树访问文档的内容,并根据需要修改文档。DOM可以随意存取文件树的任何部分,并且可以随意修改可扩展标记语言文件,易于理解和开发。然而DOM处理大型的可扩展标记语言文件会产生大量的开销,占用过多系统的内存,并且创建DOM树是一个缓慢的过程,因此DOM不适合处理大型的可扩展标记语言文件。
发明内容
本发明实施例提供一种可扩展标记语言解析方法及装置,能够处理大型的可扩展标记语言文件、存取以及修改可扩展标记语言文件并且易于开发和理解。
第一方面,本发明实施例提供了一种可扩展标记语言解析方法,包括:
获取可扩展标记语言文件中的预设片段;
将所述预设片段中的节点依次执行入栈和出栈操作;
依据所述出栈操作得到的节点构造和所述预设片段对应的节点树。
进一步的,所述将所述预设片段中的节点依次执行入栈和出栈操作,包括:
读取到开始标签时,通过第一回调函数创建根节点放入栈中;
步骤A:通过所述第一回调函数将node节点放入所述栈中;
步骤B:通过所述第一回调函数将id节点放入所述栈中,读取到结束标签时,通过第二回调函数将栈顶节点出栈,并存入所述node节点的子节点中;
和/或;
步骤C:通过所述第一回调函数将name节点放入所述栈中,读取到结束标签时,通过第二回调函数将栈顶节点出栈,并存入所述node节点的子节点中;
步骤D:读取到结束标签时,通过所述第二回调函数将栈顶节点出栈,并存入所述根节点的子节点中。
进一步的,还包括:
将所述预设片段中的node节点依次执行步骤A、B和/或C、D直至预设片段中的所有节点均执行了入栈和出栈操作。
进一步的,所述依据所述出栈操作得到的节点构造和所述预设片段对应的节点树,包括:
所述node节点的id节点和/或name节点作为所述node节点的子节点;
所述node节点作为所述根节点的子节点。
进一步的,所述将所述预设片段中的节点依次执行入栈和出栈操作,包括:
将所述预设片段中的节点通过深度优先搜素算法逐个节点执行入栈和出栈操作。
进一步的,所述第一回调函数为startElement,所述第二回调函数为endElement。
第二方面,本发明实施例还提供了一种可扩展标记语言解析装置,该装置包括:
片段获取模块,用于获取可扩展标记语言文件中的预设片段;
执行模块,用于将所述预设片段中的节点依次执行入栈和出栈操作;
节点树构造模块,用于依据所述出栈操作得到的节点构造和所述预设片段对应的节点树。
进一步的,所述执行模块,具体用于:
读取到开始标签时,通过第一回调函数创建根节点放入栈中;
步骤A:通过所述第一回调函数将node节点放入所述栈中;
步骤B:通过所述第一回调函数将id节点放入所述栈中,读取到结束标签时,通过第二回调函数将栈顶节点出栈,并存入所述node节点的子节点中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于沈阳中科创达软件有限公司,未经沈阳中科创达软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611104087.2/2.html,转载请声明来源钻瓜专利网。