发明内容
本发明要解决的技术问题在于,针对现有技术中的docx文件信息解析不稳定,容易失去原有的信息和特效的缺陷,提供一种可以快速、准确、高效的解析docx文件的文件信息解析方法及系统。
本发明解决其技术问题所采用的技术方案是:构造一种docx文件信息解析方法,其中包括步骤:S10、获取所述docx文件内的内容信息文件的存放路径;S20、根据所述内容信息文件的存放路径创建所述内容信息文件的文档对象模型;S30、根据所述内容信息文件的文档对象模型的节点类型采用相应的元素解析器解析所述节点中的元素。
在本发明所述的docx文件信息解析方法中,所述步骤S30具体为:如所述内容信息文件的文档对象模型的节点的类型为文本,则采用文本解析器解析出文本的内容和属性信息;如所述内容信息文件的文档对象模型的节点的类型为图片,则采用图片解析器解析出图片的存储路径和尺寸;如所述内容信息文件的文档对象模型的节点的类型为表格,则采用表格解析器解析出表格的行列信息、单元格合并信息、单元格的内容信息以及单元格的属性信息;如所述内容信息文件的文档对象模型的节点的类型为多边形,则采用多边形解析器解析出多边形的边框信息以及内容信息。
在本发明所述的docx文件信息解析方法中,当解析所述单元格的内容信息以及所述多边形的内容信息时,根据所述单元格的内容信息以及所述多边形的内容信息中元素的类型采用相应的元素解析器解析所述元素。
在本发明所述的docx文件信息解析方法中,所述docx文件信息解析方法还包括步骤:S40、根据解析后的所述节点中的元素生成元素信息,并将所述元素信息存储在预设的结构体中。
在本发明所述的docx文件信息解析方法中,所述docx文件信息解析方法还包括步骤:S50、将存储有所述元素信息的结构体插入到所述docx文件的多叉树存储结构体中以形成排版信息。
本发明还构造一种docx文件信息解析系统,其中包括:获取模块:用于获取所述docx文件内的内容信息文件的存放路径;创建模块:用于根据所述内容信息文件的存放路径创建所述内容信息文件的文档对象模型;以及解析模块:用于根据所述内容信息文件的文档对象模型的节点类型采用相应的元素解析器解析所述节点中的元素。
在本发明所述的docx文件信息解析系统中,所述解析模块包括:文本解析器:用于如所述内容信息文件的文档对象模型的节点的类型为文本,则解析出文本的内容和属性信息;图片解析器:用于如所述内容信息文件的文档对象模型的节点的类型为图片,则解析出图片的存储路径和尺寸;表格解析器:用于如所述内容信息文件的文档对象模型的节点的类型为表格,则解析出表格的行列信息、单元格合并信息、单元格的内容信息以及单元格的属性信息;以及多边形解析器:用于如所述内容信息文件的文档对象模型的节点的类型为多边形,则解析出多边形的边框信息以及内容信息。
在本发明所述的docx文件信息解析系统中,所述表格解析器还用于根据所述单元格的内容信息中元素的类型采用相应的元素解析器解析所述元素;所述多边形解析器还用于根据所述多边形的内容信息中元素的类型采用相应的元素解析器解析所述元素。
在本发明所述的docx文件信息解析系统中,所述docx文件信息解析系统还包括:存储模块:用于根据解析后的所述节点中的元素生成元素信息,并将所述元素信息存储在预设的结构体中。
在本发明所述的docx文件信息解析系统中,所述docx文件信息解析系统还包括:转换模块:用于将存储有所述元素信息的结构体插入到所述docx文件的多叉树存储结构体中以形成排版信息。
实施本发明的docx文件信息解析方法及系统,具有以下有益效果:可以快速、准确、高效的解析docx文件,避免了原有的docx文件信息解析方法解析不稳定,容易失去原有的信息和特效的缺陷。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在图1所示的本发明的docx文件信息解析方法的第一优选实施例的流程图中,所述docx文件信息解析方法开始于步骤100,随后执行:
步骤101,获取所述docx文件内的内容信息文件的存放路径;
步骤102,根据所述内容信息文件的存放路径创建所述内容信息文件的文档对象模型;
步骤103,根据所述内容信息文件的文档对象模型的节点类型采用相应的元素解析器解析所述节点中的元素。
最后该方法结束于步骤104。
采用本发明的docx文件信息解析方法时,获取docx文件中的内容信息文件(一个名为document.xml的主文件,该主文件包括docx文件中的主要的内容信息,文件名document.xml并不构成对该内容信息文件的限制),然后创建该内容信息文件的文档对象模型,遍历该文件对象模型的所有节点,根据节点的类型采用相应的元素解析器解析节点中的元素。由于不同元素的解析使用的是不同的元素解析器,这样在后期如要对某一种元素的解析效果进行升级或者说如docx文件某一种元素对应的xml文件存储格式发生变化,只需要改变相应的元素解析器就可以了,不需要对所有解析器进行改变,这样就方便了后期的升级和维护,使得解析结果更加稳定,避免了原有的docx文件信息解析方法解析不稳定,容易失去原有的信息和特效的缺陷。
在图2所示的本发明的docx文件信息解析方法的第二优选实施例的流程图中,所述docx文件信息解析方法开始于步骤200,随后执行:
步骤201,获取所述docx文件内的内容信息文件的存放路径;
步骤202,根据所述内容信息文件的存放路径创建所述内容信息文件的文档对象模型;
步骤203,如所述内容信息文件的文档对象模型的节点的类型为文本,则采用文本解析器解析出文本的内容和属性信息;
如所述内容信息文件的文档对象模型的节点的类型为图片,则采用图片解析器解析出图片的存储路径和尺寸;
如所述内容信息文件的文档对象模型的节点的类型为表格,则采用表格解析器解析出表格的行列信息、单元格合并信息、单元格的内容信息以及单元格的属性信息;
如所述内容信息文件的文档对象模型的节点的类型为多边形,则采用多边形解析器解析出多边形的边框信息以及内容信息。
最后该方法结束于步骤204。
本发明的docx文件信息解析方法通过对当前节点的属性(attribute)名称进行判断从而得到该节点的元素类型(例如:文本、图片、表格以及多边形等),
如果当前节点为文本,创建文本解析器:textParser,解析出文本内容和属性信息(文字的大小、颜色、字体、是否带下划线、删除线等);
如果当前节点为图片,创建图片解析器:imageParser,解析出该图片对应的ID号和尺寸(图片的宽和高)。然后创建“document.xml.rels”文件的DOM(Document Object Model:文档对象模型)对象,在这个DOM对象中根据图片的ID号解析出图片的存储路径,并根据得到的图片的路径信息将图片内容读取到内存中;
如果当前节点为表格,创建表格解析器:tableParser,解析出该表格的行列信息(行列数量)、单元格合并信息、单元格的内容信息以及单元格的属性信息;
如果当前节点为多边形,创建多边形解析器:shapeParser,解析出该多边形的边框属性以及内容信息。
本发明的docx文件信息解析方法采用的元素解析器基本上涵盖了docx的所有元素,便于进行定制管理,如需要解析出docx文件里的文本,则只使用文本解析器进行解析;如需要解析出docx文件里的图片,则只使用图片解析器进行解析,解析过程快速、高效。
作为本发明的docx文件信息解析方法的优选实施例,当解析所述单元格的内容信息以及所述多边形的内容信息时,根据所述单元格的内容信息以及所述多边形的内容信息中元素的类型采用相应的元素解析器解析所述元素。由于表格的单元格可以包含docx中的任意元素,因此在解析单元格的内容信息时,要创建docxParser(元素解析器)来进行解析,具体解析方法和上述的不同节点类型的元素解析方法相同。由于多边形也可以像表格的单元格一样包含docx中的任意元素,因此在解析多边形内容信息时,也要创建docxParser(元素解析器)来进行解析,具体解析方法和上述的不同节点类型的元素解析方法相同。通过对单元格的内容信息以及多边形的内容信息的单独设置,使得本发明的docx文件信息解析方法解析效果更佳、更稳定,避免了表格和多边形内部的元素类型不同造成的解析出错。
在图3所示的本发明的docx文件信息解析方法的第三优选实施例的流程图中,所述docx文件信息解析方法开始于步骤300,随后执行:
步骤301,获取所述docx文件内的内容信息文件的存放路径;
步骤302,根据所述内容信息文件的存放路径创建所述内容信息文件的文档对象模型;
步骤303,根据所述内容信息文件的文档对象模型的节点类型采用相应的元素解析器解析所述节点中的元素;
步骤304,根据解析后的所述节点中的元素生成元素信息,并将所述元素信息存储在预设的结构体中;
最后该方法结束于步骤305。
本发明的docx文件信息解析方法将解析出的元素信息存储到预设的结构体中。这样可以将结构体中的元素信息供其他程序使用,也可以将结构体中的元素信息转换为其它格式的文件,这样在没装office的情况下,也可以阅读docx文件里的信息。
在图4所示的本发明的docx文件信息解析方法的第四优选实施例的流程图中,所述docx文件信息解析方法开始于步骤400,随后执行:
步骤401,获取所述docx文件内的内容信息文件的存放路径;
步骤402,根据所述内容信息文件的存放路径创建所述内容信息文件的文档对象模型;
步骤403,根据所述内容信息文件的文档对象模型的节点类型采用相应的元素解析器解析所述节点中的元素;
步骤404,根据解析后的所述节点中的元素生成元素信息,并将所述元素信息存储在预设的结构体中;
步骤405,将存储有所述元素信息的结构体插入到所述docx文件的多叉树存储结构体中以形成排版信息;
最后该方法结束于步骤406。
将解析后的元素信息的结构体插入到所述docx文件的多叉树存储结构体中以形成排版信息;使得用户可以更好、更方便的使用多叉树存储结构体中的排版信息而不需要做任何其他处理。
本发明还涉及一种docx文件信息解析系统,在图5所示的本发明的docx文件信息解析系统的第一优选实施例的结构示意图;所述docx文件信息解析系统包括获取模块1、创建模块2以及解析模块3,获取模块1用于获取所述docx文件内的内容信息文件的存放路径;创建模块2用于根据所述内容信息文件的存放路径创建所述内容信息文件的文档对象模型;解析模块3用于根据所述内容信息文件的文档对象模型的节点类型采用相应的元素解析器解析所述节点中的元素。
采用本发明的docx文件信息解析系统时,获取模块1获取docx文件中的内容信息文件(一个名为document.xml的主文件),然后创建模块2创建该内容信息文件的文档对象模型,遍历该文件对象模型的所有节点,解析模块3根据节点的类型采用相应的元素解析器解析节点中的元素。由于不同元素的解析使用的是不同的元素解析器,这样在后期如要对某一种元素的解析效果进行升级或者说如docx文件某一种元素对应的xml文件存储格式发生变化,只需要改变相应的元素解析器就可以了,不需要对所有解析器进行改变,这样就方便了后期的升级和维护,使得解析结果更加稳定,避免了原有的docx文件信息解析系统解析不稳定,容易失去原有的信息和特效的缺陷。
在图6所示的本发明的docx文件信息解析系统的第二优选实施例的结构示意图;所述解析模块3包括文本解析器31、图片解析器32、表格解析器33以及多边形解析器34,文本解析器31用于如所述内容信息文件的文档对象模型的节点的类型为文本,则解析出文本的内容和属性信息;图片解析器32用于如所述内容信息文件的文档对象模型的节点的类型为图片,则解析出图片的存储路径和尺寸;表格解析器33用于如所述内容信息文件的文档对象模型的节点的类型为表格,则解析出表格的行列信息、单元格合并信息、单元格的内容信息以及单元格的属性信息;多边形解析器34用于如所述内容信息文件的文档对象模型的节点的类型为多边形,则解析出多边形的边框信息以及内容信息。
本发明的docx文件信息解析系统通过对当前节点的属性(attribute)名称进行判断从而得到该节点的元素类型(例如:文本、图片、表格以及多边形等),
如果当前节点为文本,创建文本解析器31:textParser,解析出文本内容和属性信息(文字的大小、颜色、字体、是否带下划线、删除线等);
如果当前节点为图片,创建图片解析器32:imageParser,解析出该图片对应的ID号和尺寸(图片的宽和高)。然后创建“document.xml.rels”文件的DOM对象,在这个DOM对象中根据图片的ID号解析出图片的存储路径,并根据得到的图片路径信息将图片内容读取到内存中;
如果当前节点为表格,创建表格解析器33:tableParser,解析出该表格的行列信息(行列数量)、单元格合并信息、单元格的内容信息以及单元格的属性信息;
如果当前节点为多边形,创建多边形解析器34:shapeParser,解析出该多边形的边框属性以及内容信息。
本发明的docx文件信息解析系统采用的元素解析器基本上涵盖了docx的所有元素,便于进行定制管理,如需要解析出docx文件里的文本,则只使用文本解析模块进行解析;如需要解析出docx文件里的图片,则只使用图片解析模块进行解析,解析过程快速、高效。
作为本发明的docx文件信息解析系统的优选实施例,当解析所述单元格的内容信息以及所述多边形的内容信息时,根据所述单元格的内容信息以及所述多边形的内容信息中元素的类型采用相应的元素解析器解析所述元素。由于表格的单元格可以包含docx中的任意元素,因此在解析单元格的内容信息时,要创建docxParser(元素解析器)来进行解析,具体解析方法和上述的不同节点类型的元素解析方法相同。由于多边形也可以像表格的单元格一样包含docx中的任意元素,因此在解析多边形内容信息时,也要创建docxParser(元素解析器)来进行解析,具体解析方法和上述的不同节点类型的元素解析方法相同。通过对单元格的内容信息以及多边形的内容信息的单独设置,使得本发明的docx文件信息解析系统解析效果更佳、更稳定,避免了表格和多边形内部的元素类型不同造成的解析出错。
在图7所示的本发明的docx文件信息解析系统的第三优选实施例的结构示意图;所述docx文件信息解析系统还包括存储模块4,存储模块4用于根据解析后的所述节点中的元素生成元素信息,并将所述元素信息存储在预设的结构体中。
本发明的存储模块4将解析出的元素信息存储到预设的结构体中。这样可以将结构体中的元素信息供其他程序使用,也可以将结构体中的元素信息转换为其它格式的文件,这样在没装office的情况下,也可以阅读docx文件里的信息。
在图8所示的本发明的docx文件信息解析系统的第四优选实施例的结构示意图;所述docx文件信息解析系统还包括转换模块5,转换模块5用于将存储有所述元素信息的结构体插入到所述docx文件的多叉树存储结构体中以形成排版信息。
转换模块5将解析后的元素信息的结构体插入到所述docx文件的多叉树存储结构体中以形成排版信息;使得用户可以更好、更方便的使用多叉树存储结构体中的排版信息而不需要做任何其他处理。
下面通过图9的本发明的docx文件信息解析方法的优选实施例的具体流程图说明docx文件信息解析方法的具体实施原理。
1)导入docx文件并将docx文件进行解压;
2)根据解压后的docx文件的目录文件“[Content_Types].XML”获取内容信息文件(在解析时会用到的所有xml文件)的存放路径;
3)创建“core.xml”文件的DOM文档对象,解析出docx文件的title(标题)、subject(主题)、creator(创建者)、keywords(关键字)等文件属性信息;步骤3非必要步骤,用户可以根据需要选择实施;
4)创建内容信息文件“document.xml”文件的DOM文档对象模型;
5)开始解析“document.xml”文件的DOM对象,具体步骤如下:
A、创建docx元素解析器:docxParser;
B、遍历多叉树节点,并通过对当前节点的“attribute”(属性)名称
进行判断从而得到节点所存储的元素类型(具体的元素类型有:文本、图片、表格以及多边形等);
a、如果当前节点为文本,创建文本解析器31:textParser,解析出文本内容和属性信息(文字的大小、颜色、字体、是否带下划线、删除线等);
b、如果当前节点为图片,创建图片解析器32:imageParser,解析出该图片对应的ID号和尺寸(图片的宽和高)。然后创建“document.xml.rels”文件的DOM对象,在这个DOM对象中根据图片的ID号解析出图片的存储路径,并根据得到的图片的路径信息将图片内容读取到内存中;
c、如果当前节点为表格,创建表格解析器33:tableParser,解析出该表格的行列信息(行列数量)、单元格合并信息、单元格的内容信息(表格的单元格可以包含docx中的任意元素,因此在解析单元格的内容信息时,要创建docxParser对象来进行解析)和属性信息;
d、如果当前节点为多边形,创建多边形解析器34:shapeParser,解析出多边形的边框属性以及内容信息(多边形可以像表格的单元格一样包含docx中的任意元素,因此在解析多边形内容信息时,也要创建docxParser对象来进行解析)。
C、将解析出的元素信息存储到相应的元素存储结构体中;
D、将当前节点的元素存储结构体插入到docx文件的多叉树存储结构体中,从而形成了排版信息。
综上所述,本发明的docx文件信息解析方法及系统可以快速、准确、高效的解析docx文件,避免了原有的docx文件信息解析方法解析不稳定,容易失去原有的信息和特效的缺陷。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。