一种可扩展标记语言解析方法及装置制造方法及图纸

技术编号:15219905 阅读:49 留言:0更新日期:2017-04-26 19:21
本发明专利技术公开了一种可扩展标记语言解析方法及装置。该方法包括:获取可扩展标记语言文件中的预设片段;将所述预设片段中的节点依次执行入栈和出栈操作;依据所述出栈操作得到的节点构造和所述预设片段对应的节点树。通过本发明专利技术的技术方案,能够处理大型的可扩展标记语言文件、存取以及修改可扩展标记语言文件并且易于开发和理解。

Method and device for analyzing extensible markup language

The invention discloses a method and a device for analyzing extensible markup language. The method comprises: acquiring preset fragments of extensible markup language file; the default node fragment of the order of execution stack and the stack; according to the node tree node structure stack operation gets and the preset corresponding fragment. Through the technical proposal of the invention, it can handle large extensible markup language file, access and modify extensible markup language file, and is easy to develop and understand.

【技术实现步骤摘要】

本专利技术实施例涉及一种智能终端技术,尤其涉及一种可扩展标记语言解析方法及装置。
技术介绍
可扩展标记语言(ExtensibleMarkupLanguage,XML)是W3C组织于1998年2月发布的标准。可扩展标记语言作为全球通用的半结构化的数据模型,它的应用领域己广泛涉及出版、电子商务、企业协作以及Web服务等方而由于可扩展标记语言具有跨平台、简单易用等特性,在很短的时间内就获得了广泛认同,其应用领域不断地得到拓展,已成为一种被大量使用的通用数据格式。SAX,全称SimpleAPIfor可扩展标记语言,既是一种接口,也是一种软件包。它是一种可扩展标记语言解析的替代方法。它逐行扫描文档,一边扫描一边解析。由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,这对于大型文档的解析是个巨大优势。然而SAX只能对文件按顺序剖析一遍,不支持对文件的随意存取。并且它只能读取可扩展标记语言文件内容,不能修改可扩展标记语言文件内容。开发上也比较复杂,需要自己制作事件处理器。文档对象模型(DocumentObjectModel,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节点的子节点中;和/或;步骤C:通过所述第一回调函数将name节点放入所述栈中,读取到结束标签时,通过第二回调函数将栈顶节点出栈,并存入所述node节点的子节点中;步骤D:读取到结束标签时,通过所述第二回调函数将栈顶节点出栈,并存入所述根节点的子节点中。进一步的,所述执行模块,具体用于:将所述预设片段中的node节点依次执行步骤A、B和/或C、D直至预设片段中的所有节点均执行了入栈和出栈操作。进一步的,所述节点树构造模块,具体用于:所述node节点的id节点和/或name节点作为所述node节点的子节点;所述node节点作为所述根节点的子节点。进一步的,所述执行模块,具体用于:将所述预设片段中的节点通过深度优先搜素算法逐个节点执行入栈和出栈操作。进一步的,所述第一回调函数为startElement,所述第二回调函数为endElement。本专利技术通过获取可扩展标记语言文件中的预设片段,将预设片段中的节点依次执行入栈和出栈操作,依据出栈操作得到的节点构造和所述预设片段对应的节点树,解决了现有技术中通过SAX或者DOM对可扩展标记语言文件进行解析时存在的缺点。本专利技术实施例利用DOM的操作便利性和SAX的占用内存少的特性,达到能够处理大型的可扩展标记语言文件、存取以及修改可扩展标记语言文件并且易于开发和理解的效果。附图说明图1是本专利技术实施例一中的一种可扩展标记语言解析方法的流程图;图2是本专利技术实施例二中的一种可扩展标记语言解析方法的流程图;图3是本专利技术实施例三中的一种可扩展标记语言解析方法的流程图;图4是本专利技术实施例四中的一种可扩展标记语言解析方法的流程图;图5是本专利技术实施例五中的一种可扩展标记语言解析装置的结构示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。实施例一图1为本专利技术实施例一提供的一种可扩展标记语言解析方法的流程图,本实施例可适用于终端设备进行可扩展标记语言解析的情况,该方法可以由本专利技术实施例提供的可扩展标记语言解析的装置来执行,该装置可采用软件和/或硬件的方式实现,该装置可集成在任何需要可扩展标记语言解析的终端设备中,例如典型的是智能终端(例如笔记本电脑),如图1所示,该方法具体包括如下步骤:S110,获取可扩展标记语言文件中的预设片段。其中,所述预设片段为可扩展标记语言文件中需要解析的部分。工程师可以根据项目的需要对可扩展标记语言文件进行片段截取。S120,将所述预设片段中的节点依次执行入栈和出栈操作。其中,所述预设片段中的节点个数至少为一个。具体的,利用栈的结构特点,依次对预设片段中的节点进行入栈和出栈操作。例如可以是,当预设片段中有2个节点的情况下,第一个节点先进行入栈和出栈操作,第二个节点再进行入栈和出栈操作。S130,依据所述出栈操作得到的节点构造和所述预设片段对应的节点树。其中,所述节点构造为根节点包括节点;也可以为根节点包括节点,本文档来自技高网
...

【技术保护点】
一种可扩展标记语言解析方法,其特征在于,包括:获取可扩展标记语言文件中的预设片段;将所述预设片段中的节点依次执行入栈和出栈操作;依据所述出栈操作得到的节点构造和所述预设片段对应的节点树。

【技术特征摘要】
1.一种可扩展标记语言解析方法,其特征在于,包括:获取可扩展标记语言文件中的预设片段;将所述预设片段中的节点依次执行入栈和出栈操作;依据所述出栈操作得到的节点构造和所述预设片段对应的节点树。2.根据权利要求1所述的方法,其特征在于,所述将所述预设片段中的节点依次执行入栈和出栈操作,包括:读取到开始标签时,通过第一回调函数创建根节点放入栈中;步骤A:通过所述第一回调函数将node节点放入所述栈中;步骤B:通过所述第一回调函数将id节点放入所述栈中,读取到结束标签时,通过第二回调函数将栈顶节点出栈,并存入所述node节点的子节点中;和/或;步骤C:通过所述第一回调函数将name节点放入所述栈中,读取到结束标签时,通过第二回调函数将栈顶节点出栈,并存入所述node节点的子节点中;步骤D:读取到结束标签时,通过所述第二回调函数将栈顶节点出栈,并存入所述根节点的子节点中。3.根据权利要求2所述的方法,其特征在于,还包括:将所述预设片段中的node节点依次执行步骤A、B和/或C、D直至预设片段中的所有节点均执行了入栈和出栈操作。4.根据权利要求2所述的方法,其特征在于,所述依据所述出栈操作得到的节点构造和所述预设片段对应的节点树,包括:所述node节点的id节点和/或name节点作为所述node节点的子节点;所述node节点作为所述根节点的子节点。5.根据权利要求1所述的方法,其特征在于,所述将所述预设片段中的节点依次执行入栈和出栈操作,包括:将所述预设片段中的节点通过深度优先搜素算法逐个节点执行入栈和出栈操作。6.根据权利要求2所述的方法,其特征在于,所述第一回调函数为startElement,所述第二回调函数为endE...

【专利技术属性】
技术研发人员:王祺
申请(专利权)人:沈阳中科创达软件有限公司
类型:发明
国别省市:辽宁;21

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

1