发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的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文件;发送单元,适于将第二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文件起到了目录索引的作用,在第一XML文件中不存储实体文件转换的字符串,通过读取文件体积很小的第一XML文件可以清楚明了地得知各实体文件的存储路径,通过节点属性快速定位到实体文件,方便接收方正确快捷地获取实体文件,不需读取直接存储实体文件内容的XML文件,不会出现系统内存溢出的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种XML文件的生成方法的流程图,如图1所示,该方法包括:
步骤S110,将待传输的实体文件放入第一文件夹中。
其中,实体文件是指待传输的如图片、文本等文件,可以根据需要按文件名、格式类型等方式进行排序,使得其在第一文件夹中的目录结构更为有序。
步骤S120,建立第一XML文件,将第一文件夹中的各实体文件的目录信息写入第一XML文件。
步骤S130,将第一文件夹和第一XML文件压缩得到一个压缩包。
步骤S140,将压缩包进行加密处理得到相应的加密字符串。
例如,采用数字信封技术对压缩包进行处理。数字信封是一种综合利用了对称加密技术和非对称加密技术两者的优点进行信息安全传输的一种技术,既发挥了对称加密算法速度快、安全性好的优点,又发挥了非对称加密算法密钥管理方便的优点。具体地,数字信封包含被加密的内容和被加密的用于加密该内容的密钥。当接收方收到数字信封时,先用私钥或预共享密钥解密,得到“加密密钥”,再用该密钥解密密文,获得原文。加密处理得到的加密字符串可以为base64编码格式的字符串,这种编码格式的优点是适于在HTTP环境下传递较长的标识信息。
步骤S150,建立第二XML文件,将加密字符串写入第二XML文件。
步骤S160,将第二XML文件传输至接收方。
可见,图1所示的方法,通过建立第一文件夹存储待传输文件,并建立第一XML文件写入第一文件夹中的各实体文件的目录信息,建立了实体文件与XML文件节点的关联存储,再将第一文件夹和第一XML文件压缩得到一个压缩包,并对压缩包进行加密处理得到相应的加密字符串,将加密字符串写入建立的第二XML文件,便可以将第二XML文件传输至接收方,接收方不需要完全读取第二XML的内容,只需要对加密字符串进行解密操作,得到的第一XML文件起到了目录索引的作用,在第一XML文件中不存储实体文件转换的字符串,通过读取文件体积很小的第一XML文件可以清楚明了地得知各实体文件的存储路径,通过节点属性快速定位到实体文件,方便接收方正确快捷地获取实体文件,不需读取直接存储实体文件内容的XML文件,不会出现系统内存溢出的问题。
具体地,图1所示的方法中步骤S120中将第一文件夹中的各实体文件的目录信息写入第一XML文件包括:将第一文件夹中的各实体文件的目录信息写入第一XML文件中的一个存储节点或者多个存储节点;实体文件的目录信息包括:实体文件的名称、文件格式信息、文件类型信息、文件路径信息、文件签名信息、文件哈希值。
例如,第一文件夹中有文件shili1.pdf,shili2.txt。则可以在第一XML文件中建立节点<FileInfo>,在该节点下存储实体文件的目录信息;对于文件shili1.pdf,建立存储节点,在该节点中存储该文件的目录信息,如文件名称“shili1”,文件格式信息“pdf”等,此时该存储节点形如<Files FileName=“shili1”FileType=“pdf”>。
在本发明的一个实施例中,图1所示的方法中,将加密字符串写入第二XML文件包括:采用流方式将加密字符串写入第二XML文件的指定节点中。
由于加密字符串是将压缩包进行加密处理得到的,其数据量很大,将其写入第二XML文件时会造成单节点过大,容易发生写入出错的情况。为解决这个问题,可以采用流方式进行加密字符串的写入。例如,下列代码给出了一种将指定节点命名为Crypograph并在该节点下写入加密字符串的方法:
XML格式的文件,在单个节点存储信息超过30M时,存在很大的性能瓶颈,直接读取该节点并解析其中的内容会造成内存溢出。采取流方式进行读取可以有效地解决该问题。
更为具体地,上述方法适用于招投标领域,此时待传输的实体文件是投标文件,由于投标文件包括工程量清单,那么上述方法进一步包括:建立第三XML文件,将投标文件的工程量清单写入第三XML文件,将第三XML文件放入第二文件中;将第一文件夹、第二文件夹和第一XML文件压缩得到一个压缩包。此时第一文件夹中的文件通常可以为:承诺书、法定代表人身份证明和授权委托书、联合体协议书、施工组织设计、投标保证金等文件的扫描件,通常为PDF格式。之后,可以进一步进行上述方法中的其他步骤,如将压缩包进行加密处理得到相应的加密字符串,建立第二XML文件,将加密字符串写入第二XML文件以及将第二XML文件传输至接收方。此时第二XML文件即为提交的标书文件。
在本发明的一个实施例中,上述方法进一步包括接收方的如下处理:找到第二XML文件中的指定节点;采用流方式从第二XML文件的指定节点中读取出加密字符串;对加密字符串进行解密和解压缩处理后得到第一XML文件和第一文件夹。
例如,第二XML文件中指定节点命名为Crypograph并在该节点下写入了加密字符串,则在读取第二XML文件时,先确定该节点的起始位置,再定位该节点中存储的字节数(即加密字符串的字节数),再读取该加密字符串,从而克服了该节点数据过大,直接读取该节点可能造成内存溢出的问题。
类似地,在得到第一XML文件和第一文件夹后,可根据接收方的需要对其进行数据入库的操作,当第一文件夹中存储的文件过大时,同样可以采取流方式读写以克服一次性读取某一文件造成内存溢出的问题:采用流方式对第一XML文件和第一文件夹中的实体文件进行读取/写入数据库的操作;其中,对每个待读/写文件,确定每次读/写操作的数据量;获取该待读/写文件的起始位置和文件字段长度;根据所述每次读/写操作的数据量,从所述起始位置分段读/写所述待读取文件。
图2示出了根据本发明一个实施例的一种XML文件的生成装置的结构示意图,如图2所示,XML文件的生成装置200包括:
规划存储单元210,适于将待传输的实体文件放入第一文件夹中;以及建立第一XML文件,将第一文件夹中的各实体文件的目录信息写入第一XML文件。其中,实体文件是指待传输的如图片、文本等文件,可以根据需要按文件名、格式类型等方式进行排序,使得其在第一文件夹中的目录结构更为有序。
压缩单元220,适于将第一文件夹和第一XML文件压缩得到一个压缩包。
加密单元230,适于将压缩包进行加密处理得到相应的加密字符串。例如,采用数字信封技术对压缩包进行处理,加密处理得到的加密字符串可以为base64编码格式的字符串。
XML文件生成单元240,适于建立第二XML文件,将加密字符串写入第二XML文件。
发送单元250,适于将第二XML文件发送给接收方。
可见,图2所示的装置,通过规划存储单元210建立第一文件夹存储待传输文件,并建立第一XML文件写入第一文件夹中的各实体文件的目录信息,压缩单元220再将第一文件夹和第一XML文件压缩得到一个压缩包,加密单元230对压缩包进行加密处理得到相应的加密字符串,XML文件生成单元240将加密字符串写入建立的第二XML文件,发送单元250便可以将第二XML文件传输至接收方,从而通过第一XML文件起到了目录索引的作用,在第一XML文件中不存储实体文件转换的字符串,从而大大减小了文件体积;而通过读取文件体积很小的第一XML文件还可以清楚明了地得知各实体文件的存储路径,方便接收方正确快捷地获取实体文件。
具体地,图2所示的装置中,规划存储单元210,适于将第一文件夹中的各实体文件的目录信息写入第一XML文件中的一个存储节点或者多个存储节点;实体文件的目录信息包括:实体文件的名称、文件格式信息、文件类型信息、文件路径信息、文件签名信息、文件哈希值。
例如,第一文件夹中有文件shili1.pdf,shili2.txt。则可以在第一XML文件中建立节点<FileInfo>,在该节点下存储实体文件的目录信息;对于文件shili1.pdf,建立存储节点,在该节点中存储该文件的目录信息,如文件名称“shili1”,文件格式信息“pdf”等,此时该存储节点形如<Files FileName=“shili1”FileType=“pdf”>。
在本发明的一个实施例中,图2所示的装置中,XML文件生成单元240,适于采用流方式将加密字符串写入第二XML文件的指定节点中。由于加密字符串是将压缩包进行加密处理得到的,其数据量很大,将其写入第二XML文件时会造成单节点过大,容易发生写入出错的情况。为解决这个问题,可以采用流方式进行加密字符串的写入。
更为具体地,上述装置适用于招投标领域,此时待传输的实体文件是投标文件,由于投标文件包括工程量清单,那么规划存储单元210,进一步适于建立第三XML文件,将投标文件的工程量清单写入第三XML文件,将第三XML文件放入第二文件中;压缩单元220,适于将第一文件夹、第二文件夹和第一XML文件压缩得到一个压缩包。此时加密单元230,XML文件生成单元240,发送单元250可以用于与图2所示装置中相同的功能。
需要说明的是,上述装置实施例的具体实施方式与前述对应的方法实施例中的实施方式相同,在此不再赘述。
图3示出了根据本发明一个实施例的一种XML文件的传输系统的结构示意图,如图3所示,该系统包括:XML文件接收装置310和如上述任一实施例所述的XML文件的生成装置320。
XML文件接收装置310包括:
接收单元311,适于接收XML文件的生成装置发送的第二XML文件。
读取单元312,适于找到第二XML文件中的指定节点,采用流方式从第二XML文件的指定节点中读取出加密字符串。
解密单元313,适于对加密字符串进行解密得到解密后的压缩包。
解压缩单元314,适于对压缩包进行解压缩处理后得到第一XML文件和第一文件夹。
例如,第二XML文件中指定节点命名为Crypograph并在该节点下写入了加密字符串,则在读取第二XML文件时,先确定该节点的起始位置,再定位该节点中存储的字节数(即加密字符串的字节数),再读取该加密字符串,从而克服了该节点数据过大,直接读取该节点可能造成内存溢出的问题。
类似地,在得到第一XML文件和第一文件夹后,可根据接收方的需要对其进行数据入库的操作,当第一文件夹中存储的文件过大时,同样可以采取流方式读写以克服一次性读取某一文件造成内存溢出的问题:此时,XML文件接收装置进一步包括:入库单元,适于采用流方式对第一XML文件和第一文件夹中的实体文件进行写入数据库的操作;读取单元,进一步适于采用流方式对第一XML文件和第一文件夹中的实体文件进行读取操作;其中,对每个待读/写文件,确定每次读/写操作的数据量;获取该待读/写文件的起始位置和文件字段长度;根据所述每次读/写操作的数据量,从所述起始位置分段读/写所述待读取文件。
综上所述,本发明技术方案提供的XML文件的生成方法、装置和系统,通过建立第一文件夹存储待传输文件,并建立第一XML文件写入第一文件夹中的各实体文件的目录信息,建立了实体文件与XML文件节点的关联存储,再将第一文件夹和第一XML文件压缩得到一个压缩包,并对压缩包进行加密处理得到相应的加密字符串,将加密字符串写入建立的第二XML文件,便可以将第二XML文件传输至接收方,接收方不需要完全读取第二XML的内容,只需要对加密字符串进行解密操作,得到的第一XML文件起到了目录索引的作用,在第一XML文件中不存储实体文件转换的字符串,通过读取文件体积很小的第一XML文件可以清楚明了地得知各实体文件的存储路径,通过节点属性快速定位到实体文件,方便接收方正确快捷地获取实体文件,不需读取直接存储实体文件内容的XML文件,不会出现系统内存溢出的问题。接收方在获取到实体文件时,还可以采用流方式对实体文件进行入库操作以克服内存溢出的问题。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的XML文件的生成装置和系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。