文件转换方法、装置及电子设备与流程

文档序号:33399587发布日期:2023-03-08 15:43阅读:25来源:国知局
1.本公开涉及数据处理
技术领域
:,尤其涉及一种文件转换方法、装置及电子设备。
背景技术
::2.一些平台中,仅支持表格格式的文件导入,然而,在大部分情况下,得到的文件的格式多种多样,例如,可扩展标记语言(extensiblemarkuplanguage,xml)格式的文件,导致文件无法导入平台,此时,需要将xml格式文件转换为平台支持导入的表格格式文件。3.目前,在将多个xml格式文件转换为表格文件的过程中,常采用的方法是,先将多个xml格式分别通过转换软件进行多次转换,得到多个表格文件,然后对多个表格文件进行合并得到最终的表格文件,导致文件转换过程繁琐。技术实现要素:4.本公开实施例提供一种文件转换方法、装置及电子设备,以解决现有文件转换过程繁琐的问题。5.为了解决上述技术问题,本公开是这样实现的:6.第一方面,本公开实施例提供了一种文件转换方法,所述方法包括:7.获取n个可扩展标记语言xml文件,所述n个xml文件的每个xml文件中包括至少一个元素以及每个元素的子元素的值,n为大于1的整数;8.根据所述n个xml文件,生成目标表格,其中,所述目标表格包括至少一个目标行,一个目标行与目标子元素的一个值对应,一个目标行包括所述n个xml文件的目标子元素的一个值,以及所述n个xml文件中为所述一个值的目标子元素关联的子元素的值,所述目标子元素为所述n个xml文件中每个元素都包含的子元素。9.第二方面,本公开实施例还提供一种文件转换装置,所述装置包括:10.文件获取模块,用于获取n个可扩展标记语言xml文件,所述n个xml文件的每个xml文件中包括至少一个元素以及每个元素的子元素的值,n为大于1的整数;11.生成模块,用于根据所述n个xml文件,生成目标表格,其中,所述目标表格包括至少一个目标行,一个目标行与目标子元素的一个值对应,一个目标行包括所述n个xml文件的目标子元素的一个值,以及所述n个xml文件中为所述一个值的目标子元素关联的子元素的值,所述目标子元素为所述n个xml文件中每个元素都包含的子元素。12.第三方面,本公开实施例还提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本公开各实施例提供的方法中的步骤。13.第四方面,本公开实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现本公开各实施例提供的方法中的步骤。14.在本公开实施例的文件转换过程中,无需对多个xml文件的每个文件分别进行转换得到多个表格,是对多个xml文件进行转换得到一个目标表格,而得到的目标表格中,一个目标行与目标子元素的一个值对应,一个目标行包括所述n个xml文件的目标子元素的一个值,以及所述n个xml文件中为该一个值的目标子元素关联的子元素的值,即文件转换生成的一个目标表格中包括了多个xml文件中目标子元素的每个值以及每个值的目标子元素关联的子元素的值,完成对多个xml文件的转换,这样,可降低文件转换繁琐程度,提高文件转换的简易性。附图说明15.为了更清楚地说明本公开实施例的技术方案,下面将对本公开实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。16.图1是本公开实施例提供的文件转换方法的流程图之一;17.图2是本公开实施例提供的一xml文件的示例图;18.图3是本公开实施例提供的另一xml文件的示例图;19.图4是本公开实施例提供的一xml文件对应的嵌套hashmap的示意图;20.图5是本公开实施例提供的另一xml文件对应的嵌套hashmap的示意图;21.图6是本公开实施例提供的文件转换方法的模块示意图;22.图7是本公开实施例提供的电子设备的结构示意图。具体实施方式23.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。24.参见图1,提供一实施例的文件转换方法,上述方法包括以下步骤:25.步骤101:获取n个可扩展标记语言xml文件。26.其中,n个xml文件的每个xml文件中包括至少一个元素以及每个元素的子元素的值,n为大于1的整数。27.xml文件中可包括至少一个元素(xml元素,也可以称为一个节点),一个元素可包括一个开始标记、一个结束标记以及位于该开始标记与该结束标记之间的内容,元素的内容可以为空,也可以包括其他元素(即该元素的子元素)和文本中的至少一项。在本实施例中,xml文件中的一个元素的内容可包括至少一个子元素,类似地,子元素可包括一个开始标记、一个结束标记以及位于该开始标记与该结束标记之间的内容(即该子元素的值,可以是文本)。28.步骤102:根据n个xml文件,生成目标表格。29.其中,目标表格包括至少一个目标行,一个目标行与目标子元素的一个值对应,一个目标行包括n个xml文件的目标子元素的一个值,以及n个xml文件中为一个值的目标子元素关联的子元素的值,目标子元素为n个xml文件中每个元素都包含的子元素。30.需要说明的是,目标子元素为n个xml文件中每个元素都包含的一子元素,可以是预先指定的子元素,例如,是预设配置信息中预先指定的子元素,根据预设配置信息,可确定目标子元素。31.在本实施中,同一xml文件中不同元素的子元素相同,同一xml文件中不同元素之间至少部分子元素的值不同,同一xml文件中不同元素的目标子元素的值不同。对于目标子元素,在不同xml文件的元素中,可能存在相同的值,而不同xml文件的元素中除包括相同的目标子元素外,还可能包括不同的子元素,一个值的目标子元素关联的子元素的值即是n个xml文件的目标元素中除目标子元素之外的子元素中的值,目标元素即为n个xml文件的元素中目标子元素的值为该一个值的元素。例如,n个xml文件包括三个xml文件,即xml文件1、xml文件2和xml文件3,xml文件1中元素x的目标子元素的值为s,元素x还包括子元素b和子元素c,xml文件2中元素y的目标子元素的值为s,元素y还包括子元素d和子元素e,xml文件3中元素z的目标子元素的值为h,元素z还包括子元素f,目标子元素的值包括s和h这两个值,则生成的目标表格中包括两行,其中,一行包括者三个xml文件的目标子元素的值s,以及三个xml文件中为s的目标子元素关联的子元素的值,另一行包括者三个xml文件的目标子元素的值h,以及三个xml文件中为h的目标子元素关联的子元素的值,其中,值为s的目标子元素关联的子元素的值包括元素x的子元素b的值、元素x的子元素c的值、元素y的子元素d的值以及元素y的子元素e的值,值为h的目标子元素关联的子元素的值包括元素z的子元素f的值。可以理解,上述一行中子元素f的值为空,上述另一行中子元素b、子元素c、子元素d和子元素e的值均为空。在本实施例中,对n个xml文件进行转换得到一个目标表格,生成的一个目标表格中可包括至少一行,目标子元素的一个值以及n个xml文件中为该一个值的目标子元素关联的子元素的值作为目标表格中的一行。32.在本公开实施例的文件转换过程中,无需对多个xml文件的每个文件分别进行转换得到多个表格,是对多个xml文件进行转换得到一个目标表格,而得到的目标表格中,一个目标行与目标子元素的一个值对应,一个目标行包括n个xml文件的目标子元素的一个值,以及n个xml文件中为该一个值的目标子元素关联的子元素的值,即文件转换生成的一个目标表格中包括了多个xml文件中目标子元素的每个值以及每个值的目标子元素关联的子元素的值,完成对多个xml文件的转换,这样,可降低文件转换繁琐程度,提高文件转换的简易性。33.在一个实施例中,根据n个xml文件,生成目标表格,包括:34.基于n个xml文件,生成n个嵌套哈希映射表hashmap,其中,一嵌套hashmap的键包括一xml文件中每个元素的目标子元素的值,一嵌套hashmap的键的值包括一xml文件中每个元素对应的内部hashmap,一内部hashmap的键包括n个xml文件中一元素对应的子元素;35.根据n个嵌套hashmap,生成目标表格,目标表格的行数与目标数量匹配,目标数量为目标集合中值的个数,目标集合为n个嵌套hashmap中目标子元素的值的并集。36.hashmap可用于存储键值对(key-value)映射,实现了map接口。可以理解,一内部hashmap的键(key)的值(value)包括n个xml文件中一元素对应的子元素的值,可以理解,一xml文件中一元素对应的内部hashmap的键的值包括该xml文件中该元素对应的子元素的值。n个嵌套hashmap与n个xml文件一一对应,一xml文件对应的内部hashmap数量与该xml文件中的元素数量相同。n个嵌套hashmap中目标子元素的不同值的数量与目标表格的行数相同。37.在本实施例中,可先生成n个嵌套hashmap,可通过遍历n个嵌套hashmap,生成目标表格,完成文件转换,由于hashmap是键值形式,通过遍历hashmap,可快速查找目标子元素的值对应的内部hashmap以及查找内部hashmap中各子元素的值,以生成目标表格,这样可提高文件转换效率。38.在一个实施例中,根据n个嵌套hashmap,生成目标表格,包括:39.对于n个嵌套hashmap中目标子元素的每个值,根据键与列名称之间的对应关系,确定为该值的目标子元素关联的内部hashmap中各键的列名称;40.将为值的目标子元素关联的内部hashmap中各键的值作为目标表格中对应列的值,目标表格中的一目标行包括目标子元素的一个值关联的内部hashmap中各键的值。41.可将xml文件中子元素(可以理解是子元素名称,对应内部hashmap的键)可映射为目标表格中的列名称,即对于n个嵌套hashmap中目标子元素的一个值,可根据键与列名称之间的对应关系,确定为该一个值的目标子元素关联的内部hashmap中各键的列名称,这样,可将为该一个值的目标子元素关联的内部hashmap中各键的值赋值给目标表格中该各键对应的列(可以理解是各键对应的列名称对应的列),且需要说明的是,是赋值给目标表格中该一个值对应的目标行对应的列。需要说明的是,键与列名称之间的对应关系可预先配置,例如,可根据n个xml文件中的子元素预先生成键与列名称之间的对应关系。42.在本实施例中,通过将为某个值的目标子元素关联的内部hashmap中各键的值作为目标表格中对应列的值,以确保目标表格中各列数据的准确性,提高得到的目标表格数据的准确性。43.在一个实施例中,对于n个嵌套hashmap中目标子元素的每个值,根据键与列名称之间的对应关系,确定为值的目标子元素关联的内部hashmap中各键的列名称之前,还包括:44.遍历n个嵌套hashmap,确定n个嵌套hashmap中目标子元素的每个值关联的内部hashmap。45.可以理解,目标子元素的一个值关联的内部hashmap即使为该值的目标子元素所在的元素对应的内部hashmap,可根据目标子元素的值遍历n个嵌套hashmap,可得到n个嵌套hashmap中目标子元素的每个值关联的内部hashmap,然后将为每个值的目标子元素关联的内部hashmap中各键的值作为目标表格中对应列的值,以确保目标表格中各列数据的准确性,提高得到的目标表格数据的准确性。且通过遍历hashmap,可快速定位n个嵌套hashmap中目标子元素的每个值关联的内部hashmap,可快速查找内部hashmap中各子元素的值,以生成目标表格,这样可提高文件转换效率。46.在一个实施例中,根据n个xml文件,生成目标表格之后,还包括:47.将目标表格存储至预设配置信息的目标目录中,且目标表格的名称为预设配置信息中的目标名称。48.即可预先配置存储目录(目标目录)以及目标名称,在生成目标表格过程中,可生成为表格名称为目标名称的目标表格,且可将其存储至目标目录,以便后续查找、调用目标表格等。49.下面以一个具体实施例对上述方法的过程加以具体说明。具体过程如下:50.获取来自其他c#系统等dataset(数据集)序列化后产生的xml文件。51.在transfer.properties配置文件(预设配置信息)中指定转换相关的配置:52.指定存放各xml文件的目录和存放输出文件(目标表格)的目标目录,以及指定输出文件的名称;53.指定能够将各xml文件中的同一条记录相互关联的主键(目标子元素),以及指定主xml文件名称;54.指定期望生成的excel的列名称及各列数据对应的xml文件中的子元素。55.使用saxreader解析器读取n个xml文件中各个xml文件,将每个xml文件中各个节点(即各元素,如图2中的table节点,也称table元素)的数据解析并存放在嵌套hashmap中,如此形成了和xml文件个数相同的若干个嵌套hashmap,即生成n个嵌套hashmap。在图2中,为xml文件1的示意图,文件1中包括两个table元素,每个table元素中的子元素可包括编码、姓名、性别、出生日期、工作岗位等,目标子元素可以是编码,可用于区分不同的元素。例如,图2中,第一table元素中,编码的值为bbde86dd-a2a1-4beb-809d-1be01ba8b3ed,姓名的值为安xx,性别的值为女,出生日期的值为1968-02-22,工作岗位的值为事业单位管理岗位,第二table元素中,编码的值为d3e873f5-1c70-4870-8a3c-9490d965adbd,姓名的值为安yy,性别的值为男,出生日期的值为1978-10-26,工作岗位的值为机关干部岗位。图3为xml文件2的示意图,文件2包括两个table元素,每个table元素中的子元素可包括编码、姓名、历史工作单位等,例如,图3中,第一table元素中,编码的值为bbde86dd-a2a1-4beb-809d-1be01ba8b3ed,姓名的值为安xx,历史工作单位的值为aa公司,第二table元素中,编码的值为d3e873f5-1c70-4870-8a3c-9490d965adbd,姓名的值为安yy,历史工作单位的值为bb公司。56.一个文件的嵌套hashmap的结构为:一个内部hashmap和一个table元素对应,一个table元素的各个子节点(子元素)名即是对应内部hashmap的key,各个子节点对应的值即是该内部hashmap的值。然后,内部hashmap作为外部hashmap的值,该table元素中的主键(目标子元素)作为key存放到外部hashmap中。如图4所示,为文件1的嵌套hashmap结构,如图5所示,为文件2的嵌套hashmap结构。57.以主xml文件(例如,可预先在文件1和文件中指定主xml文件,比如,可以是文件1)对应的嵌套hashmap进行遍历,对其中的每一条记录,关联上n个xml文件中除主xml文件外的其他xml文件(如上举例,即文件2)对应的嵌套hashmap中的记录,共同构造一个和输出excel内容相对应的对象实例,将对象实例存到列表中,使用easyexcel统一输出一个excel文件(目标表格)到指定的目录下,具体过程如下:58.对于主xml对应的嵌套hashmap中的一个元素(对应目标子元素的一个值)的内部hashmap,构造一个对应的excel内容的实例。根据excel列和xml内子元素的对应关系,将该元素中含有的对应的excel的列进行赋值,并遍历除主xml之外的其他文件所对应的嵌套hashmap,利用外部hashmap的key(目标子元素的一个值)能迅速获取到与之关联的内部hashmap,根据excel列和xml内属性的对应关系,将内部hashmap中含有的对应的excel的列进行赋值,如此,形成目标子元素的一个值对应的行,对于n个嵌套hashmap的目标子元素的每个不同值,经过以上类似步骤,可得到目标子元素的每个不同值分别对应的行,得到目标表格,其中,各个xml中相关的目标子元素的同一值以及该同一值关联的子元素的值(同一条数据)都聚合到一个excel内容对象中(即聚合到一行中),且所有内容都组装成excel内容对象的列表。此时使用easyexcel或者hssfworkbook等excel操作库都能将目标表格输出。59.如上举例,得到的目标表格中包括两行,每一行对应六列,六列的列名称分别可以为编号、姓名、性别、出生日期、工作岗位和历史工作单位,每一行则包括对应的值,其中一行中包括bbde86dd-a2a1-4beb-809d-1be01ba8b3ed、安xx、女、1968-02-22、事业单位管理岗位和aa公司,另一行包括d3e873f5-1c70-4870-8a3c-9490d965adbd、安yy、男、1978-10-26、机关干部岗位和bb公司。60.参见图6,图6是本公开实施例提供的一种文件转换装置600的模块示意图,装置600包括:61.文件获取模块601,用于获取n个可扩展标记语言xml文件,n个xml文件的每个xml文件中包括至少一个元素以及每个元素的子元素的值,n为大于1的整数;62.生成模块602,用于根据n个xml文件,生成目标表格,其中,目标表格包括至少一个目标行,一个目标行与目标子元素的一个值对应,一个目标行包括n个xml文件的目标子元素的一个值,以及n个xml文件中为一个值的目标子元素关联的子元素的值,目标子元素为n个xml文件中每个元素都包含的子元素。63.在一实施例中,生成模块602,包括:64.第一生成单元,用于基于n个xml文件,生成n个嵌套哈希映射表hashmap,其中,一嵌套hashmap的键包括一xml文件中每个元素的目标子元素的值,一嵌套hashmap的键的值包括一xml文件中每个元素对应的内部hashmap,一内部hashmap的键包括n个xml文件中一元素对应的子元素;65.第二生成单元,用于根据n个嵌套hashmap,生成目标表格,目标表格的行数与目标数量匹配,目标数量为目标集合中值的个数,目标集合为n个嵌套hashmap中目标子元素的值的并集。66.在一实施例中,第二生成单元,包括:67.第一确定单元,用于对于n个嵌套hashmap中目标子元素的每个值,根据键与列名称之间的对应关系,确定为值的目标子元素关联的内部hashmap中各键的列名称;68.第二确定单元,用于将为值的目标子元素关联的内部hashmap中各键的值作为目标表格中对应列的值,目标表格中的一目标行包括目标子元素的一个值关联的内部hashmap中各键的值。69.在一实施例中,装置600还包括:70.关联确定模块,用于遍历n个嵌套hashmap,确定n个嵌套hashmap中目标子元素的每个值关联的内部hashmap。71.在一实施例中,装置600还包括:72.存储模块,用于将目标表格存储至预设配置信息的目标目录中,且目标表格的名称为预设配置信息中的目标名称。73.文件转换装置600能够实现上述方法实施例中方法实现的各个过程,技术特征一一对应,技术效果相同,为避免重复,这里不再赘述。74.如图7所示,在一个实施例中,本公开实施例还提供一种电子设备700,包括处理器701和存储器702,存储器702上存储有可在处理器上运行的计算机程序,该计算机程序被处理器701执行时实现上述文件转换方法实施例中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。75.本公开实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述文件转换方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,的计算机可读存储介质,如只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等。76.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。77.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台电子设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例的方法。78.上面结合附图对本公开的实施例进行了描述,但是本公开并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本公开的启示下,在不脱离本公开宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本公开的保护之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1