文件解析方法及装置与流程

文档序号:12719936阅读:236来源:国知局
文件解析方法及装置与流程

本发明属于数据解析技术领域,尤其涉及文件解析方法及装置。



背景技术:

现今,不同文本的格式规范各不相同,常见的CSV解析方法严重依赖与CSV文件的格式规范,即只能处理常规CSV文件,当CSV文件稍有不规范的地方,就会导致整个文件解析失败,容错性低,而为了提高容错性,会对一行数据进行多次扫描分析,降低解析效率。因此,现有技术中存在着解析文件时无法处理不规范数据,容错性低,且解析效率低的问题。



技术实现要素:

本发明实施例提供一种文件解析方法及装置,旨在解决现有技术中解析文件时无法处理不规范数据,容错性低,且解析效率低的问题。

第一方面,本发明实施例提供了一种文件解析方法,所述解析方法包括:

预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略;

读取待解析文件中的数据,获取当前的字段解析状态;

从所述预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略中查找出与所述当前的字段解析状态相匹配的文件解析策略;

利用与所述当前的字段解析状态相匹配的文件解析策略执行相应的文件解析处理流程。

第二方面,本发明实施例提供了一种文件解析装置,所述解析装置包括:

配置模块,用于预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略;

获取模块,用于读取待解析文件中的数据,获取当前的字段解析状态;

查找模块,用于从所述预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略中查找出与所述当前的字段解析状态相匹配的文件解析策略;

执行模块,用于利用与所述当前的字段解析状态相匹配的文件解析策略执行相应的文件解析处理流程。

本发明实施例与现有技术相比存在的有益效果是:本发明实施例通过预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略;读取待解析文件中的数据,获取当前的字段解析状态;从预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略中查找出与当前的字段解析状态相匹配的文件解析策略;利用与当前的字段解析状态相匹配的文件解析策略执行相应的文件解析处理流程,从而可以快速对文件进行解析,保证解析的高效性,并且具有高容错性,能够处理不规范的数据。

附图说明

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

图2为图1所示实施例中的步骤S104的细化步骤流程示意图;

图3为图2所示实施例中的步骤S204的细化步骤流程示意图;

图4为图2所示实施例中的步骤S204的另一细化步骤流程示意图;

图5为图1所示实施例中的步骤S104的另一细化步骤流程示意图;

图6为本发明实施例提供的一种文件解析装置的结构示意图;

图7为图6所示实施例中的执行模块604的细化结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

请参阅图1,图1为本发明实施例提供的一种文件解析方法的流程示意图。本实施例的执行主体为解析装置。本实施例提供的文件解析方法包括以下步骤:

步骤S101、预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略。

在本发明实施例中,预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略,并将该文件解析策略保存于解析装置中。

其中,文件解析策略为对待解析文件中的数据进行读取、容错处理、保存等处理,并对字段解析状态进行状态转变的文件解析策略。

步骤S102、读取待解析文件中的数据,获取当前的字段解析状态。

在本发明实施例中,解析装置在执行文件解析的过程中,自动获取当前处于何种文件解析状态,在文件解析状态下读取到预设特殊字符之后,根据文件解析状态所对应的文件解析策略解析待解析的文件。

步骤S103、从预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略中查找出与当前的字段解析状态相匹配的文件解析策略。

在本发明实施例中,在某个字段解析状态下,若解析装置读取到某个预设特殊字符,则从预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略中查找出与上述某个字段解析状态相匹配的文件解析策略。

步骤S104、利用与当前的字段解析状态相匹配的文件解析策略执行相应的文件解析处理流程。

在本发明实施例中,在某个字段解析状态下,解析装置利用与该字段解析状态相匹配的文件解析策略对待解析文件中的数据进行读取、容错处理、保存等处理,以及将该字段解析状态转变成其他字段解析状态。

进一步地,图2示出了步骤S104中利用与当前的字段解析状态相匹配的文件解析策略执行相应的文件解析处理流程的具体实现流程,详述如下:

步骤S201、当当前的字段解析状态为行结束状态时,读取下一个字符,若下一个字符为字段包括符,则根据与行结束状态相匹配的文件解析策略确定当前的字段解析状态由行结束状态转变成字段开始状态。

在本发明实施例中,当当前的字段解析状态为行结束状态时,读取下一个字符,并判断该字符是否为字段包括符,若是字段包括符,则根据与行结束状态相匹配的文件解析策略确定当前的字段解析状态由行结束状态转变成字段开始状态。若不是字段包括符,则根据与行结束状态相匹配的文件解析策略确定当前的字段解析状态由行结束状态转变成字段匹配状态。

步骤S202、当当前的字段解析状态为字段开始状态时,若接下来读取到的字符不是字段包括符,则根据与字段开始状态相匹配的文件解析策略确定当前的字段解析状态由字段开始状态转变成字段匹配状态。

在本发明实施例中,当当前的字段解析状态为字段开始状态时,若接下来读取到的字符是字段包括符,则根据与字段开始状态相匹配的文件解析策略确定当前的字段解析状态由字段开始状态转变成字段结束状态。若接下来读取到的字符不是字段包括符,则根据与字段开始状态相匹配的文件解析策略确定当前的字段解析状态由字段开始状态转变成字段匹配状态。

步骤S203、当当前的字段解析状态为字段匹配状态时,根据与字段匹配状态相匹配的文件解析策略读取待解析文件中的数据,若读取到当前字符为字段包括符,则根据与字段匹配状态相匹配的文件解析策略确定当前的字段解析状态由字段匹配状态转变成字段结束状态。

在本发明实施例中,当当前的字段解析状态为字段匹配状态时,根据与字段匹配状态相匹配的文件解析策略读取待解析文件中的数据,若读取到当前字符为字段包括符,则根据与字段匹配状态相匹配的文件解析策略确定当前的字段解析状态由字段匹配状态转变成字段结束状态。若读取到当前字符不为字段包括符,则根据与字段匹配状态相匹配的文件解析策略继续读取待解析文件中的数据,且不转变当前的字段解析状态。

步骤S204、当当前的字段解析状态为字段结束状态时,读取下一个字符,若下一个字符不是字段分隔符或行结束符,则根据与字段结束状态相匹配的文件解析策略对当前字符之后的字符进行容错处理。

进一步地,图3示出了步骤S204中当当前的字段解析状态为字段结束状态时,读取下一个字符,若下一个字符不是字段分隔符或行结束符,则根据与字段结束状态相匹配的文件解析策略对当前字符之后的字符进行容错处理的具体实现流程,详述如下:

步骤S301、当当前的字段解析状态为字段结束状态时,读取下一个字符,若下一个字符为字段包括符,检测待解析文件中是否有出错标签。

步骤S302、若有出错标签,则关闭容错标记功能,结束容错处理。

步骤S303、若没有出错标签,则打开容错标记功能,在文件解析出错的地方设置出错标签,且当前的字段解析状态由字段结束状态转变成字段匹配状态。

进一步地,图4示出了步骤S204中当当前的字段解析状态为字段结束状态时,读取下一个字符,若下一个字符不是字段分隔符或行结束符,则根据与字段结束状态相匹配的文件解析策略对当前字符之后的字符进行容错处理的另一个具体实现流程,详述如下:

步骤S401、当当前的字段解析状态为字段结束状态时,读取下一个字符,若下一个字符为转义字符或普通字符,则检测待解析文件中是否有出错标签。

步骤S402、若有出错标签,则延长出错标签的标志范围。

步骤S403、若没有出错标签,则打开容错标记功能,在文件解析出错的地方设置出错标签,且当前的字段解析状态由字段结束状态转变成字段匹配状态。

进一步地,图5示出了步骤S104中利用与当前的字段解析状态相匹配的文件解析策略执行相应的文件解析处理流程的另一具体实现流程,详述如下:

步骤S501、当当前的字段解析状态为行结束状态时,读取下一个字符,若下一个字符为字段包括符,则当前的字段解析状态由行结束状态转变成字段开始状态。

步骤S502、当当前的字段解析状态为字段开始状态时,若接下来读取到的字符不是字段包括符,则当前的字段解析状态由字段开始状态转变成字段匹配状态。

步骤S503、当当前的字段解析状态为字段匹配状态时,根据与字段匹配状态相匹配的文件解析策略读取待解析文件中的数据,若读取到当前字符为字段包括符,则当前的字段解析状态由字段匹配状态转变成字段结束状态。

步骤S504、当当前的字段解析状态为字段结束状态时,若下一个字符为字段分隔符或行结束符,检测待解析文件中是否有出错标签。

步骤S505、若没有出错标签,则当前的字段解析状态由字段结束状态转变成字段分割状态或行结束状态。

在本发明实施例中,若下一个字符为字段分隔符,且没有检测到出错标签,则当前的字段解析状态由字段结束状态转变成字段分割状态。若下一个字符为行结束符,且没有检测到出错标签,则当前的字段解析状态由字段结束状态转变成行结束状态。

步骤S506、若有出错标签,则检测容错标记功能是否打开。

步骤S507、若打开,则延长出错标签的标志范围。

步骤S508、若没有打开,则当前的字段解析状态由字段结束状态转变成字段分割状态或行结束状态,并结束出错标签标记功能。

在本发明实施例中,若下一个字符为字段分隔符,且检测到出错标签,则检测容错标签是否打开,若没有打开,则当前的字段解析状态由字段结束状态转变成字段分割状态,并结束出错标签标记功能。若下一个字符为行结束符,且检测到出错标签,则检测容错标签标记功能是否打开,若没有打开,则当前的字段解析状态由字段结束状态转变成行结束状态,并结束出错标签标记功能。

进一步地,在转变成行结束状态,且结束出错标签后,结束当前行解析任务,保存当前行解析任务的解析结果及当前行解析任务的解析结果在解析文件中的位置。保存当前行解析任务中的原始数据及原始数据在原始文件中的位置。

在本发明实施例中,通过上述实施方案,可以对出错的文件进行容错解析处理,避免对出错的数据进行多次解析。

以上可以看出,本实施例提供的一种文件解析方法由于通过预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略;读取待解析文件中的数据,获取当前的字段解析状态;从预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略中查找出与当前的字段解析状态相匹配的文件解析策略;利用与当前的字段解析状态相匹配的文件解析策略执行相应的文件解析处理流程,从而可以快速对文件进行解析,保证解析的高效性,并且具有高容错性,能够处理不规范的数据。

请参阅图6,图6为本发明实施例提供的一种文件解析装置的结构示意图。本实施例的解析装置包括的各模块用于执行图1对应的实施例中的各步骤,具体请参阅图1以及图1对应的实施例中的相关描述,此处不赘述。本实施例的解析装置包括:配置模块601、获取模块602、查找模块603、执行模块604。具体地:

配置模块601,用于预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略。

获取模块602,用于读取待解析文件中的数据,获取当前的字段解析状态。

查找模块603,用于从预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略中查找出与当前的字段解析状态相匹配的文件解析策略。

执行模块604,用于利用与当前的字段解析状态相匹配的文件解析策略执行相应的文件解析处理流程。

在本发明实施例中,在某个字段解析状态下,解析装置利用与该字段解析状态相匹配的文件解析策略对待解析文件中的数据进行读取、容错处理、保存等处理,以及将该字段解析状态转变成其他字段解析状态。

进一步地,图7示出了执行模块604的具体结构示意图,执行模块604包括的各单元用于执行图2对应的实施例中的各步骤,具体请参阅图2以及图2对应的实施例中的相关描述,此处不赘述。本实施例的执行模块604包括:第一字段解析状态处理单元701、第二字段解析状态处理单元702、第三字段解析状态处理单元703、第四字段解析状态处理单元704。具体地:

第一字段解析状态处理单元701、用于当当前的字段解析状态为行结束状态时,读取下一个字符,若下一个字符为字段包括符,则当前的字段解析状态由行结束状态转变成字段开始状态。

第二字段解析状态处理单元702、用于当当前的字段解析状态为字段开始状态时,若接下来读取到的字符不是字段包括符,则当前的字段解析状态由字段开始状态转变成字段匹配状态。

第三字段解析状态处理单元703、当当前的字段解析状态为字段匹配状态时,根据与字段匹配状态相匹配的文件解析策略读取待解析文件中的数据,若读取到当前字符为字段包括符,则当前的字段解析状态由字段匹配状态转变成字段结束状态。

第四字段解析状态处理单元704、当当前的字段解析状态为字段结束状态时,读取下一个字符,若下一个字符不是字段分隔符或行结束符,则对当前字符之后的字符进行容错处理。

进一步地,上述第四字段解析状态处理单元704具体用于:

当当前的字段解析状态为字段结束状态时,读取下一个字符,若下一个字符为字段包括符,检测待解析文件中是否有出错标签。

若有出错标签,则关闭容错标记功能,结束容错处理。

若没有出错标签,则打开容错标记功能,在文件解析出错的地方设置出错标签,且当前的字段解析状态由字段结束状态转变成字段匹配状态。

进一步地,上述第四字段解析状态处理单元704,还用于:

当当前的字段解析状态为字段结束状态时,读取下一个字符,若下一个字符为转义字符或普通字符,检测待解析文件中是否有出错标签。

若有出错标签,则延长出错标签的标志范围。

若没有出错标签,则打开容错标记功能,在文件解析出错的地方设置出错标签,且当前的字段解析状态由字段结束状态转变成字段匹配状态。

进一步地,上述第四字段解析状态处理单元704,还用于:

当当前的字段解析状态为字段结束状态时,若下一个字符为字段分隔符或行结束符,检测待解析文件中是否有出错标签。

若没有出错标签,则当前的字段解析状态由行结束状态转变成字段分割状态或行结束状态。

若有出错标签,则检测容错标签是否打开。

若打开,则延长出错标签的标志范围。

若没有打开,则当前的字段解析状态由行结束状态转变成字段分割状态或行结束状态,并结束出错标签标记功能。

在本发明实施例中,通过上述实施方案,可以对出错的文件进行容错解析处理,避免对出错的数据进行多次解析。

以上可以看出,本实施例提供的一种文件解析装置由于通过预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略;读取待解析文件中的数据,获取当前的字段解析状态;从预先配置不同字段解析状态下读取到预设特殊字符后所对应执行的文件解析策略中查找出与当前的字段解析状态相匹配的文件解析策略;利用与当前的字段解析状态相匹配的文件解析策略执行相应的文件解析处理流程,从而可以快速对文件进行解析,保证解析的高效性,并且具有高容错性,能够处理不规范的数据。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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