一种XML文档解析方法、系统及电子设备和存储介质技术方案

技术编号:21432258 阅读:23 留言:0更新日期:2019-06-22 11:56
本申请公开了一种XML文档解析方法、系统及一种电子设备和计算机可读存储介质,该方法包括:获取可扩展标记语言XML标签,并判断当前XML标签是否作为基类被继承;如果是,则判断所述当前XML标签中内容的对象类型;其中,所述对象类型包括基类对象和派生类对象;根据所述对象类型调用对应的预先创建的解析函数,并利用所述解析函数解析所述当前XML标签的内容。本申请首先判断XML标签是否作为基类被继承,并进一步判断作为基类被继承的XML标签中内容的对象类型,从而根据对象类型动态地调用相应的解析函数,最终实现无论是基类对象还是派生类对象均能够被正确的解析。

【技术实现步骤摘要】
一种XML文档解析方法、系统及电子设备和存储介质
本申请涉及计算机
,更具体地说,涉及一种XML文档解析方法、系统及一种电子设备和一种计算机可读存储介质。
技术介绍
现有技术中,利用c++解析XML文档时,原XML文档中出现的基类标记派生类数据的情况下,按照常规解析方式只能解析基类数据而无法完整解析派生类数据。另外,还存在一种以抽象类机制为基础的解析方法,具体使用boost::serialization用基类指针转存派生类或者用BOOST_CLASS_EXPORT来实现。然而由于抽象类不能被实例化为可供使用的具体对象,从而造成XML文档中被声明为基类的对象无法被解析。因此,如何确保基类对象和派生类对象均能被正确解析是本领域技术人员需要解决的问题。
技术实现思路
本申请的目的在于提供一种XML文档解析方法、系统及一种电子设备和一种计算机可读存储介质,能够确保基类对象和派生类对象均能被正确解析。为实现上述目的,本申请提供了一种XML文档解析方法,包括:获取可扩展标记语言XML标签,并判断当前XML标签是否作为基类被继承;如果是,则判断所述当前XML标签中内容的对象类型;其中,所述对象类型包括基类对象和派生类对象;根据所述对象类型调用对应的预先创建的解析函数,并利用所述解析函数解析所述当前XML标签的内容。可选的,所述判断当前XML标签是否作为基类被继承,包括:获取所述当前XML标签中定义的标签属性;根据所述标签属性确定所述当前XML标签是否作为基类被继承。可选的,所述判断当前XML标签是否作为基类被继承之后,还包括:若所述当前XML标签未作为基类被继承,则调用预先创建的基类解析函数,并利用所述基类解析函数解析所述当前XML标签中的基类对象。可选的,当所述对象类型为派生类对象时,所述根据所述对象类型调用对应的预先创建的解析函数,并利用所述解析函数解析所述当前XML标签的内容,包括:调用预先创建的派生类解析函数,并利用所述派生类解析函数解析所述派生类对象。可选的,所述调用预先创建的派生类解析函数,包括:确定所述当前XML标签中用于调用基类对象的第一位置和所述当前XML标签的上一级标签中用于定义所述基类对象的第二位置;将所述第一位置和所述第二位置的所述基类对象均替换为基类指针;其中,对所述第一位置的所述基类对象进行替换时,为所述基类指针分配派生类类型的内存;基于C++多态特性利用所述基类指针动态调用所述派生类解析函数。可选的,还包括:判断所有所述XML标签是否均解析完成;如果否,则获取未解析XML标签并对其进行解析。可选的,所述判断所有所述XML标签是否均解析完成之后,还包括:若所有所述XML标签均解析完成,则将解析结果保存至与XML顶层标签对应的类中。为实现上述目的,本申请提供了一种XML文档解析系统,包括:标签判断模块,用于获取可扩展标记语言XML标签,并判断当前XML标签是否作为基类被继承;类型判断模块,用于如果是,则判断所述当前XML标签中内容的对象类型;其中,所述对象类型包括基类对象和派生类对象;内容解析模块,用于根据所述对象类型调用对应的预先创建的解析函数,并利用所述解析函数解析所述当前XML标签的内容。可选的,所述标签判断模块,包括:属性获取模块,用于获取所述当前XML标签中定义的标签属性;标签确定模块,用于根据所述标签属性确定所述当前XML标签是否作为基类被继承。可选的,还包括:判断当前XML标签是否作为基类被继承之后,若所述当前XML标签未作为基类被继承,则调用预先创建的基类解析函数,并利用所述基类解析函数解析所述当前XML标签中的基类对象。可选的,所述内容解析模块,用于当所述对象类型为派生类对象时,调用预先创建的派生类解析函数,并利用所述派生类解析函数解析所述派生类对象。可选的,所述内容解析模块,包括:位置确定单元,用于确定所述当前XML标签中用于调用基类对象的第一位置和所述当前XML标签的上一级标签中用于定义所述基类对象的第二位置;指针替换单元,用于将所述第一位置和所述第二位置的所述基类对象均替换为基类指针;其中,对所述第一位置的所述基类对象进行替换时,为所述基类指针分配派生类类型的内存;函数调用单元,用于基于C++多态特性利用所述基类指针动态调用所述派生类解析函数。可选的,还包括:解析判断模块,用于判断所有所述XML标签是否均解析完成;标签解析模块,用于如果存在未解析完成的所述XML标签,则获取未解析XML标签并对其进行解析。可选的,还包括:结果保存模块,用于判断所有所述XML标签是否均解析完成之后,若所有所述XML标签均解析完成,则将解析结果保存至与XML顶层标签对应的类中。为实现上述目的,本申请提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如前述公开的任一种所述XML文档解析方法的步骤。为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述公开的任一种所述XML文档解析方法的步骤。通过以上方案可知,本申请提供的一种XML文档解析方法,包括:获取可扩展标记语言XML标签,并判断当前XML标签是否作为基类被继承;如果是,则判断所述当前XML标签中内容的对象类型;其中,所述对象类型包括基类对象和派生类对象;根据所述对象类型调用对应的预先创建的解析函数,并利用所述解析函数解析所述当前XML标签的内容。本申请首先判断XML标签是否作为基类被继承,并进一步判断作为基类被继承的XML标签中内容的对象类型,从而根据对象类型动态地调用相应的解析函数,最终实现无论是基类对象还是派生类对象均能够被正确的解析。本申请还公开了一种XML文档解析系统及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例公开的一种XML文档解析方法的流程图;图2为本申请实施例公开的另一种XML文档解析方法的流程图;图3为本申请实施例公开的又一种XML文档解析方法的流程图;图4为本申请实施例公开的一种具体的XML文档解析方法的流程图;图5为本申请实施例公开的一种XML文档解析系统的结构图;图6为本申请实施例公开的一种电子设备的结构图;图7为本申请实施例公开的另一种电子设备的结构图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在现有技术中,利用c++解析XML文档时,按照常规解析方式只能解析基类数据而无法完整解析派生类数据;以抽象类机制为基础的解析方法,由于抽象类不能被实例化为可供使用的具体对象,从而造成XML文本文档来自技高网...

【技术保护点】
1.一种XML文档解析方法,其特征在于,包括:获取可扩展标记语言XML标签,并判断当前XML标签是否作为基类被继承;如果是,则判断所述当前XML标签中内容的对象类型;其中,所述对象类型包括基类对象和派生类对象;根据所述对象类型调用对应的预先创建的解析函数,并利用所述解析函数解析所述当前XML标签的内容。

【技术特征摘要】
1.一种XML文档解析方法,其特征在于,包括:获取可扩展标记语言XML标签,并判断当前XML标签是否作为基类被继承;如果是,则判断所述当前XML标签中内容的对象类型;其中,所述对象类型包括基类对象和派生类对象;根据所述对象类型调用对应的预先创建的解析函数,并利用所述解析函数解析所述当前XML标签的内容。2.根据权利要求1所述的XML文档解析方法,其特征在于,所述判断当前XML标签是否作为基类被继承,包括:获取所述当前XML标签中定义的标签属性;根据所述标签属性确定所述当前XML标签是否作为基类被继承。3.根据权利要求1所述的XML文档解析方法,其特征在于,所述判断当前XML标签是否作为基类被继承之后,还包括:若所述当前XML标签未作为基类被继承,则调用预先创建的基类解析函数,并利用所述基类解析函数解析所述当前XML标签中的基类对象。4.根据权利要求1所述的XML文档解析方法,其特征在于,当所述对象类型为派生类对象时,所述根据所述对象类型调用对应的预先创建的解析函数,并利用所述解析函数解析所述当前XML标签的内容,包括:调用预先创建的派生类解析函数,并利用所述派生类解析函数解析所述派生类对象。5.根据权利要求4所述的XML文档解析方法,其特征在于,所述调用预先创建的派生类解析函数,包括:确定所述当前XML标签中用于调用基类对象的第一位置和所述当前XML标签的上一级标签中用于定义所述基类对象的第二位置;...

【专利技术属性】
技术研发人员:刘新邓蒙召李河金覃定鹏樊球
申请(专利权)人:深圳市元征科技股份有限公司
类型:发明
国别省市:广东,44

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

1