一种XML文件解析方法、装置、计算机设备及存储介质与流程

文档序号:14897362发布日期:2018-07-08 08:51阅读:146来源:国知局

本申请涉及计算机技术领域,尤其涉及一种xml文件解析方法、装置、计算机设备及存储介质。



背景技术:

在linux运行环境中,一般采用linux命令对xml文件进行全量解析。然而,在采用linux命令对xml文件进行解析时,需要占用较多的内存空间,而且所耗时间也较长。尤其是在需要解析多个xml文件时,若采用并行解析多个xml文件,很容易导致内存溢出的错误,若采用串行解析多个xml文件,会花费更长的时间,解析效率低。



技术实现要素:

本申请提供了一种xml文件解析方法、装置、计算机设备及存储介质,以减小解析过程所占内存大小,减小解析所耗时长。

第一方面,本申请提供了一种xml文件解析方法,其包括:

通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件;

根据预设加载规则逐个加载所述目标xml文件中的子节点对象至内存中;

对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据;

判断所述子节点对象是否为所述目标xml文件中最后一个子节点对象;

若所述子节点对象不是所述目标xml文件中最后一个子节点对象,加载下一个所述子节点对象至所述内存,并返回执行对所述子节点对象按照标签文本对形式进行解析的步骤,直至解析出所述目标xml文件中全部所述子节点对象对应的行记录数据为止。

第二方面,本申请提供了一种xml文件解析装置,其包括:

字符替换单元,用于通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件;

加载单元,用于根据预设加载规则逐个加载所述目标xml文件中的子节点对象至内存中;

解析单元,用于对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据;

对象判断单元,用于判断所述子节点对象是否为所述目标xml文件中最后一个子节点对象;

所述加载单元,还用于若所述子节点对象不是所述目标xml文件中最后一个子节点对象,加载下一个所述子节点对象至所述内存,以使得所述解析单元对所述子节点对象按照标签文本对形式进行解析,直至解析出所述目标xml文件中全部所述子节点对象对应的行记录数据为止。

第三方面,本申请又提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请提供的任一项所述的xml文件解析方法。

第四方面,本申请还提供了一种存储介质,其中所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行本申请提供的任一项所述的xml文件解析方法。

本申请提供一种xml文件解析方法、装置、计算机设备及存储介质。该方法先对xml文件进行非法字符替换得到目标xml文件;再将目标xml文件的子节点对象逐个加载至内存中,每加载一个子节点对象,就对子节点对象按照标签文本对形式进行解析以生成子节点对象对应的行记录数据,然后再加载下一个子节点对象,直至解析出目标xml文件中全部子节点对象对应的行记录数据为止。该方法可以使得解析过程所占内存较小,不影响终端运行其他进程,尤其是对于一些内存配置较低的终端来说,这样可以避免内存溢出或内存不够用的情况发生。同时该方法可以并行解析几个或几十个xml文件,提高解析效率,减少解析所耗时长。

附图说明

为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请一实施例提供的一种xml文件解析方法的示意流程图;

图2为本申请一实施例提供的一种xml文件解析方法的另一示意流程图;

图3为图1所示xml文件解析方法的具体流程示意图;

图4为本申请一实施例提供的一种xml文件解析装置的示意性框图;

图5为本申请一实施例提供的一种xml文件解析装置的另一示意性框图;

图6为图4所示的xml文件解析装置的具体示意性框图;

图7为本申请一实施例提供的一种计算机设备的示意性框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1,图1是本申请实施例提供的一种xml文件解析方法的示意流程图。该xml文件解析方法应用于台式电脑、手提电脑、平板电脑等终端中。如图1所示,该xml文件解析方法包括步骤s101~s105。

s101、通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件。

在一实施例中,该预设文本编译器可以为shell语言的sed命令。譬如,sed命令格式可以为:sed-i's/\(<userid>.*\)<\(.*</.*>\)/\1<\2/g'filename。当然,在其他实施例中,该预设文本编译器也可以为shell语言的tr命令。譬如,tr命令格式可以为:tr-d"\46"<input_file>output_file。该预设文本编译器还可以为其他用于实现对xml文件进行非法字符替换的命令,在此不做具体限制。

一般来说,当xml文件的编码格式与xml文件中的文本字体不兼容时,解析时容易出现报错。譬如,xml文件是latin-1编码格式,且xml文件中文本字体既有英文字体又有中文字体,由于中文字体与latin-1编码格式不兼容,若不进行编码格式转换,在后续解析时就会报错。

为了避免编码格式不兼容导致的解析错误,在一实施例中,如图2所示,图2为本申请实施例提供的一种xml文件解析方法的示意流程图。在步骤s101之前,还包括步骤s106至s109。

s106、获取xml文件的编码格式。

在一实施例中,该编码格式可以为latin-1编码格式,也可以为utf-8编码格式等其他编码格式,在此不做具体限制。

s107、判断所述xml文件的文本字体是否与所述编码格式兼容。

在一实施例中,判断所述xml文件的文本字体是否与所述编码格式兼容,具体为:获取所述xml文件中文本字体的种类,以及判断所述文本字体的种类是否与所述编码格式兼容。其中,所述文本字体的种类包括中文字体、英文字体等种类。

若判断出所述xml文件的文本字体与所述编码格式兼容,那么就不需要进行编码格式转换,此时可以执行步骤s101,即进行非法字符替换步骤。

若判断出所述xml文件的文本字体与所述编码格式不兼容,为了避免解析时出错,此时执行步骤s108。

s108、若所述xml文件的文本字体与所述编码格式不兼容,通过预设字符集编码转换命令对所述xml文件进行编码格式转换。

其中,该预设字符集编码转换命令可以为perl语言中的piconv命令。具体地,可以通过piconv命令以字节流的方式对xml文件进行编码格式转换。譬如,piconv命令可以将xml文件的格式从latin-1编码格式转换成utf-8编码格式,从而解决xml文件中存在中文字体时出现乱码错误问题。

由于piconv命令是通过字节流的方式进行编码格式转换的,所以不会一次性将整个xml文件放在内存中,这样可以避免一次性将整个xml文件放在内存中而导致内存溢出的问题,可以减缓内存压力,节省内存。

s109、将编码格式转换后的xml文件设为所述xml文件,并返回执行步骤s101。

在xml文件进行编码格式转换后,将编码格式转换后的xml文件替换掉原来的xml文件,然后执行步骤s101。

需要说明的是,在图2所示的实施例中,先进行了编码格式兼容性判断以及编码格式转换等步骤,然后再进行非法字符替换的步骤。在其他实施例中,也可以先进行非法字符替换的步骤,然后再对非法字符替换后的xml文件进行编码格式兼容性判断、编码格式转换等步骤,可以理解的是,在此种情况下,编码格式转换后的xml文件将做为目标xml文件,然后执行步骤s102。在此不对编码格式转换和非法字符替换两个过程的先后顺序做限制。

s102、根据预设加载规则逐个加载所述目标xml文件中的子节点对象至内存中。

具体地,在一实施例中,该根据预设加载规则逐个加载所述目标xml文件中的子节点对象至内存中包括:当识别出所述目标xml文件中根节点对象的起始标记符时,以所述根节点对象的下一级的子节点对象为加载单位,逐个将所述目标xml文件中的子节点对象加载至内存中,其中,所述根节点对象包括至少一个所述子节点对象。

譬如,目标xml文件的内容为:

在上述代码实例中,目标xml文件包括根节点对象,该根节点对象以<bookstore>为起始标记符,以</bookstore>为结束标记符。该根节点对象中包括四个子节点对象,每个子节点对象均以<book>为起始标记符,以</book>为结束标记符。四个子节点对象为根节点对象的下一级的子节点对象。每个子节点对象包括起始标记符<book>、结束标记符</book>以及两者之间的多个元素。譬如,在第一个子节点对象的四个元素中,其中一个元素为<title>harrypotter</title>。

可以理解的是,在其他代码实例中,子节点对象中还可以包括孙节点对象,以此规则可以嵌套多层节点对象。当目标xml文件中存在至少三层节点对象时,仍然以根节点对象的下一级的子节点对象为加载单位。

终端在读取到根节点对象的起始标记符<bookstore>之后,将以下一级的子节点对象为加载单位,逐个加载子节点对象至内存。也就是说,每次加载起始标记符<book>至结束标记符</book>之间的内容至内存中。每加载一个子节点对象就执行一次步骤s103等步骤以完成对该子节点对象的解析操作,然后再加载下一个子节点对象,以此类推。

s103、对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据。

具体地,在一实施例中,可以通过iterparse()方法对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据。其中,iterparse()方法为python语言中的elementtree中的方法。

譬如,子节点对象<book>与</book>之间有四个元素,其中一个元素为:<title>harrypotter</title>,“harrypotter”是该元素的文本内容,“title”是该元素的标签。那么iterparse()方法解析时,将以“>”为一个触发事件,以“</”为另一个触发事件,并得到两个触发事件之间的元素的文本内容“harrypotter”。同时,还会解析出该文本内容“harrypotter”的标签为“title”。标签“title”及元素的文本内容“harrypotter”形成标签文本对。同理,可以得到其他三个标签文本对。四个标签文本对形成一个元组,一个元组为一行记录数据,如,一行记录数据record={'title':'harrypotter','author':'jk.rowling','year':'2005','price':'29.99'}。

在一实施例中,为了避免内存溢出,在对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据之后,还包括:将所述行记录数据存储在行记录数据文件中;以及释放所述子节点对象所占用的内存空间。也就是说,在完成对内存中的子节点对象的解析后,将子节点对象对应的行记录数据存储在行记录数据文件中,然后再释放该子节点对象所占用的内存空间,从而为后续的子节点对象提供内存空间,避免发生内存不够或内存溢出的现象。

s104、判断所述子节点对象是否为所述目标xml文件中最后一个子节点对象。

在完成对内存中当前的子节点对象的解析后,将判断当前内存中的子节点对象是否为目标xml文件中最后一个子节点对象。

具体地,在一实施例中,如图3所示,图3为图1所示的xml文件解析方法的具体示意流程图。该步骤s104包括步骤s1041至s1044。

s1041、读取所述目标xml文件中位于当前的所述子节点对象之后的字符串。

譬如,在前述代码实例中,假设当前内存中的子节点对象为根节点对象的第一个子节点对象,那么终端读取目标xml文件中当前内存中的子节点对象之后的字符串为“<book>”,即下一个子节点对象的起始标记符。又譬如,假设当前内存中的子节点对象为根节点对象的第四个子节点对象,那么终端读取目标xml文件中当前的子节点对象之后的字符串为“</bookstore>”,即根节点对象的结束标记符。

s1042、判断所述字符串是否为根节点对象的结束标记符。

譬如,判断步骤s1041中读取的字符串是否为根节点对象的结束标记符</bookstore>。若字符串不为根节点对象的结束标记符</bookstore>,则判定当前内存中的子节点对象不是目标xml文件中最后一个子节点对象,即执行步骤s1043。若字符串为根节点对象的结束标记符</bookstore>,说明当前内存中的子节点对象为目标xml文件中最后一个子节点对象,即执行步骤s1044。

s1043、若所述字符串不为所述根节点对象的结束标记符,则判定当前的所述子节点对象不是所述目标xml文件中最后一个子节点对象。

s1044、若所述字符串为所述根节点对象的结束标记符,则判定当前的所述子节点对象是所述目标xml文件中最后一个子节点对象。

需要说明的是,判断当前内存中的子节点对象是否为目标xml文件中最后一个子节点对象的方式不局限于图3所示的方式,还可以为其他方式,在此不做具体限制。

在本实施例中,当判断出当前内存中的子节点对象为目标xml文件中最后一个子节点对象时,说明该目标xml文件已经完成了解析,解析过程可以结束了。当判断出当前内存中的子节点对象不为目标xml文件中最后一个子节点对象时,说明该目标xml文件还没有完成解析,此时需要执行步骤s105。

s105、若所述子节点对象不是所述目标xml文件中最后一个子节点对象,加载下一个所述子节点对象至所述内存,并返回执行对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据的步骤,直至解析出所述目标xml文件中全部所述子节点对象对应的行记录数据为止。

若当前的子节点对象不是目标xml文件中最后一个子节点对象,也即该目标xml文件还没有解析完,此时将继续读取下一个子节点对象至内存中,然后返回执行步骤s103至s105,一直到步骤s104判断出内存中的子节点对象为目标xml文件中最后一个子节点对象为止,从而完成整个目标xml文件的解析过程。

本实施例中的xml文件解析方法,先对xml文件进行非法字符替换得到目标xml文件;再将目标xml文件的子节点对象逐个加载至内存中,每加载一个子节点对象,就对子节点对象按照标签文本对形式进行解析以生成子节点对象对应的行记录数据,然后再加载下一个子节点对象,直至解析出目标xml文件中全部子节点对象对应的行记录数据为止。该方法逐个加载子节点对象至内存并进行解析,可以使得解析过程所占内存较小,避免内存溢出或内存不够用的情况发生。同时,该方法在解析xml文件时可以实现并行解析几个或几十个xml文件,进而大大缩短解析所耗时间,提高解析效率。

本申请实施例还提供一种xml文件解析装置,该xml文件解析装置用于执行前述任一项xml文件解析方法。具体地,请参阅图4,图4是本申请实施例提供的一种xml文件解析装置的示意性框图。xml文件解析装置300可以安装于台式电脑、平板电脑、手提电脑、等终端中。

如图4所示,xml文件解析装置300包括字符替换单元301、加载单元302、解析单元303和对象判断单元304。

字符替换单元301,用于通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件。

在一实施例中,该预设文本编译器可以为shell语言的sed命令,也可以为shell语言的tr命令等其他用于实现非法字符替换的命令,在此不做具体限制。

在一实施例中,为了避免编码格式不兼容导致的解析错误,如图5所示,图5为本申请实施例提供的一种xml文件解析装置的另一示意性框图。该xml文件解析装置300还包括格式获取单元305、格式判断单元306和编码转换单元307。

格式获取单元305,用于获取xml文件的编码格式。

在一实施例中,该编码格式可以为latin-1编码格式,也可以为utf-8编码格式等其他编码格式,在此不做具体限制。

格式判断单元306,用于判断所述xml文件的文本字体是否与所述编码格式兼容。

在一实施例中,格式判断单元306具体用于获取所述xml文件中文本字体的种类,以及判断所述文本字体的种类是否与所述编码格式兼容。若格式判断单元306判断出所述xml文件的文本字体与所述编码格式兼容,那么就不需要进行编码格式转换,此时格式判断单元306向字符替换单元301发送第一信号,该字符替换单元301在接收到第一信号后,通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件。

若格式判断单元306判断出所述xml文件的文本字体与所述编码格式不兼容,为了避免解析时出错,此时格式判断单元306将向编码转换单元307发送第二信号,以使得编码转换单元307根据第二信号执行相应操作。

编码转换单元307,用于若所述xml文件的文本字体与所述编码格式不兼容,通过预设字符集编码转换命令对所述xml文件进行编码格式转换;以及将编码格式转换后的xml文件设为所述xml文件。

其中,该预设字符集编码转换命令可以为perl语言中的piconv命令。具体地,编码转换单元307可以通过piconv命令以字节流的方式对xml文件进行编码格式转换。

编码转换单元307在将xml文件进行编码格式转换后,将编码格式转换后的xml文件替换掉原来的xml文件,然后编码转换单元307向字符替换单元301发送第三信号,以使得该字符替换单元301在接收到第三信号后,通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件。

需要说明的是,在图5所示的xml文件解析装置300中,先进行了编码格式兼容性判断以及编码格式替换等,然后再进行非法字符替换。在其他实施例中,字符替换单元301也可以先进行非法字符替换,然后再由格式获取单元305、格式判断单元306和编码转换单元307等单元对非法字符替换后的xml文件进行编码格式兼容性判断、编码格式替换等,可以理解的是,在此种情况下,编码转换单元307将编码格式转换后的xml文件做为目标xml文件。

加载单元302,用于根据预设加载规则逐个加载所述目标xml文件中的子节点对象至内存中。

在一实施例中,加载单元302具体用于当识别出所述目标xml文件中根节点对象的起始标记符时,以所述根节点对象的下一级的子节点对象为加载单位,逐个将所述目标xml文件中的子节点对象加载至内存中,其中,所述根节点对象包括至少一个所述子节点对象。

加载单元302每加载一个子节点对象至内存后,加载单元302就向解析单元303发送第四信号,以使得解析单元303在接收到第四信号后执行解析操作,进而完成对该子节点对象的解析。

解析单元303,用于对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据。

具体地,在一实施例中,解析单元303可以通过iterparse()方法对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据。其中,iterparse()方法为python语言中的elementtree中的方法。

在一实施例中,为了避免内存溢出,如图5所示,该xml文件解析装置300还包括存储单元308和内存释放单元309。在解析单元303对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据之后,解析单元303向存储单元308发送第五信号,以使得存储单元308在接收到第五信号后,将所述行记录数据存储在行记录数据文件中。在存储单元308将行记录数据存储在行记录数据文件中之后,内存释放单元309释放所述子节点对象所占用的内存空间。这样可以为后续的子节点对象提供内存空间,避免发生内存不够或内存溢出的现象。

对象判断单元304,用于判断所述子节点对象是否为所述目标xml文件中最后一个子节点对象。

在解析单元303完成对内存中当前的子节点对象的解析后,对象判断单元304将判断当前内存中的子节点对象是否为目标xml文件中最后一个子节点对象。

具体地,在一实施例中,如图6所示,图6为图4所示的xml文件解析装置的具体示意性框图。该对象判断单元304包括读取子单元3041和判断子单元3042。读取子单元3041用于读取所述目标xml文件中位于当前的所述子节点对象之后的字符串。判断子单元3042用于判断所述字符串是否为根节点对象的结束标记符。若判断子单元3042判断出所述字符串不为所述根节点对象的结束标记符,则判定当前的所述子节点对象不是所述目标xml文件中最后一个子节点对象。若判断子单元3042判断出所述字符串为所述根节点对象的结束标记符,则判定当前的所述子节点对象是所述目标xml文件中最后一个子节点对象。

在本实施例中,当对象判断单元304判断出当前内存中的子节点对象为目标xml文件中最后一个子节点对象时,说明该目标xml文件已经完成了解析,解析过程可以结束了。当对象判断单元304判断出当前内存中的子节点对象不为目标xml文件中最后一个子节点对象时,说明该目标xml文件还没有完成解析,此时对象判断单元304将向加载单元302发送第六信号,以使得加载单元302在接收到第六信号后,加载下一个所述子节点对象至所述内存。当加载单元302将下一个子节点对象加载至内存之后,所述解析单元303将对内存中的所述子节点对象按照标签文本对形式进行解析。重复上述过程,直至解析出所述目标xml文件中全部所述子节点对象对应的行记录数据为止。

本实施例中的xml文件解析装置300,字符替换单元301先对xml文件进行非法字符替换得到目标xml文件;加载单元302再将目标xml文件的子节点对象逐个加载至内存中,加载单元302每加载一个子节点对象,解析单元303就对该子节点对象按照标签文本对形式进行解析以生成子节点对象对应的行记录数据,然后加载单元302再加载下一个子节点对象,直至解析出目标xml文件中全部子节点对象对应的行记录数据为止。该xml文件解析装置300逐个加载子节点对象至内存并进行解析,可以使得解析过程所占内存较小,避免内存溢出或内存不够用的情况发生。同时,该xml文件解析装置300可以实现并行解析几个或几十个xml文件,进而大大缩短解析所耗时间,提高解析效率。

上述xml文件解析装置可以实现为一种计算机程序的形式,该计算机程序可以在如图7所示的计算机设备上运行。

请参阅图7,图7是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备400设备可以是终端。该终端可以是平板电脑、笔记本电脑、台式电脑、个人数字助理等电子设备。

参阅图7,该计算机设备400包括通过系统总线401连接的处理器402、存储器和网络接口405,其中,存储器可以包括非易失性存储介质403和内存储器404。

该非易失性存储介质403可存储操作系统4031和计算机程序4032。该计算机程序4032包括程序指令,该程序指令被执行时,可使得处理器402执行一种xml文件解析方法。

该处理器402用于提供计算和控制能力,支撑整个计算机设备400的运行。

该内存储器404为非易失性存储介质403中的计算机程序4032的运行提供环境,该计算机程序4032被处理器402执行时,可使得处理器402执行一种xml文件解析方法。

该网络接口405用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备400的限定,具体的计算机设备400可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器402用于运行存储在存储器中的计算机程序4032,以实现如下功能:通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件;根据预设加载规则逐个加载所述目标xml文件中的子节点对象至内存中;对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据;判断所述子节点对象是否为所述目标xml文件中最后一个子节点对象;若所述子节点对象不是所述目标xml文件中最后一个子节点对象,加载下一个所述子节点对象至所述内存,并返回执行对所述子节点对象按照标签文本对形式进行解析的步骤,直至解析出所述目标xml文件中全部所述子节点对象对应的行记录数据为止。

在一实施例中,处理器402在执行通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件之前,还执行如下程序:获取xml文件的编码格式;判断所述xml文件的文本字体是否与所述编码格式兼容;若所述xml文件的文本字体与所述编码格式兼容,则执行通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件的步骤;若所述xml文件的文本字体与所述编码格式不兼容,通过预设字符集编码转换命令对所述xml文件进行编码格式转换;以及将编码格式转换后的xml文件设为所述xml文件,并执行通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件的步骤。

在一实施例中,处理器402在执行根据预设加载规则逐个加载所述目标xml文件中的子节点对象至内存中时,具体执行如下程序:当识别出所述目标xml文件中根节点对象的起始标记符时,以所述根节点对象的下一级的子节点对象为加载单位,逐个将所述目标xml文件中的子节点对象加载至内存中,其中,所述根节点对象包括至少一个所述子节点对象。

在一实施例中,处理器402在执行判断所述子节点对象是否为所述目标xml文件中最后一个子节点对象时,具体执行如下程序:读取所述目标xml文件中位于当前的所述子节点对象之后的字符串;判断所述字符串是否为根节点对象的结束标记符;若所述字符串不为所述根节点对象的结束标记符,则判定当前的所述子节点对象不是所述目标xml文件中最后一个子节点对象。

在一实施例中,处理器402在执行对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据之后,还执行如下程序:将所述行记录数据存储在行记录数据文件中;以及释放所述子节点对象所占用的内存空间。

在一实施例中,处理器402在执行对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据时,具体执行如下程序:通过iterparse()方法对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据。

应当理解,在本申请实施例中,处理器402可以是中央处理单元(centralprocessingunit,cpu),该处理器402还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

在本申请的另一实施例中提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中计算机程序包括程序指令。该程序指令被处理器执行时实现:通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件;根据预设加载规则逐个加载所述目标xml文件中的子节点对象至内存中;对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据;判断所述子节点对象是否为所述目标xml文件中最后一个子节点对象;若所述子节点对象不是所述目标xml文件中最后一个子节点对象,加载下一个所述子节点对象至所述内存,并返回执行对所述子节点对象按照标签文本对形式进行解析的步骤,直至解析出所述目标xml文件中全部所述子节点对象对应的行记录数据为止。

在一实施例中,该程序指令被处理器执行通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件之前,还实现:获取xml文件的编码格式;判断所述xml文件的文本字体是否与所述编码格式兼容;若所述xml文件的文本字体与所述编码格式兼容,则执行通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件的步骤;若所述xml文件的文本字体与所述编码格式不兼容,通过预设字符集编码转换命令对所述xml文件进行编码格式转换;以及将编码格式转换后的xml文件设为所述xml文件,并执行通过预设文本编译器对xml文件进行非法字符替换以生成目标xml文件的步骤。

在一实施例中,该程序指令被处理器执行根据预设加载规则逐个加载所述目标xml文件中的子节点对象至内存中时,具体实现:当识别出所述目标xml文件中根节点对象的起始标记符时,以所述根节点对象的下一级的子节点对象为加载单位,逐个将所述目标xml文件中的子节点对象加载至内存中,其中,所述根节点对象包括至少一个所述子节点对象。

在一实施例中,该程序指令被处理器执行判断所述子节点对象是否为所述目标xml文件中最后一个子节点对象时,具体实现:读取所述目标xml文件中位于当前的所述子节点对象之后的字符串;判断所述字符串是否为根节点对象的结束标记符;若所述字符串不为所述根节点对象的结束标记符,则判定当前的所述子节点对象不是所述目标xml文件中最后一个子节点对象。

在一实施例中,该程序指令被处理器执行对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据之后,还实现:将所述行记录数据存储在行记录数据文件中;以及释放所述子节点对象所占用的内存空间。

在一实施例中,该程序指令被处理器执行对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据时,还实现:通过iterparse()方法对所述子节点对象按照标签文本对形式进行解析以生成所述子节点对象对应的行记录数据。

该存储介质可以是u盘、移动硬盘、只读存储器(rom,read-onlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本申请实施例装置中的单元可以根据实际需要进行合并、划分和删减。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1