System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种文件差异比较方法技术_技高网

一种文件差异比较方法技术

技术编号:42049602 阅读:7 留言:0更新日期:2024-07-16 23:30
本发明专利技术公开了一种文件差异比较方法,属于数据分析领域。所述方法包括以下步骤:S1、将原始文本文件的数据转换成模型对象;S2、根据原始文本文件的结构,将所述模型对象组成树状结构;S3、根据所述步骤S1、S2得到至少两个树状结构的原始文本文件模型,根据所述树状结构进行差异比较;S4、根据所述步骤S3差异比较的结果,生成差异列表;S5、根据所述差异列表,将差异与选定的原始文本文件模型进行合并,得到更新的原始文本文件。本发明专利技术实现了文件差异比较,尤其是对于arxml等特殊结构的文件差异比较。

【技术实现步骤摘要】

本专利技术属于数据分析领域,具体地说,本专利技术涉及一种文件差异比较方法


技术介绍

1、文本差异比较是一种用于比较文本文件之间差异的算法。在版本控制系统(如svn、git等)中,文本差异比较常用于确定文件版本之间的修改内容,从而实现版本控制和合并操作。下面详细解释一下文本差异比较的步骤和算法:

2、1.分解文本:首先,将要比较的文本文件分解成单行或单词(取决于粒度)。这样可以将文本比较问题转化为行或单词之间的比较,简化了算法的复杂度。

3、2.比较行/单词:对分解后的文本进行逐行或逐单词比较。最简单的方法是逐行比较,但有些算法也会在更细的层次上进行比较,比如逐字符比较。

4、3.寻找相同部分:比较两个文本时,寻找它们之间的相同部分是很重要的。这可以通过一些经典算法来实现,如最长公共子序列(longest common subsequence)或最长公共子串(longest common substring)等。

5、4.标记差异:找到相同部分后,剩余的部分就是不同之处。这些不同之处可以被标记为插入、删除或替换操作,用以表示一个文本相对于另一个的修改。

6、5.生成差异信息:标记差异后,生成一种数据结构来表示差异信息,如差异块、差异行等。这样做的目的是为了方便后续的合并或回溯操作。

7、6.应用差异:差异信息可以被应用于目标文本,以实现合并或修改操作。这通常涉及将差异块中的修改应用于目标文本的相应位置。

8、常见的文本差异比较算法包括:myers算法:基于动态规划,用于寻找最长公共子序列,被广泛用于文本比较和版本控制系统中。hunt-mcilroy算法:一种线性时间复杂度的差异比较算法,特别适用于长文本的比较。gnu diff算法:diff是一种经典的文本差异比较工具,使用一种类似于hunt-mcilroy算法的方法来生成差异信息。这些算法的具体实现可能会有所不同,但它们的基本原理是相似的:寻找文本之间的共同部分,并标记出差异。这样就能够准确地表示文本文件之间的差异,从而支持版本控制和合并操作。

9、但他们存在缺点:内存消耗:文本比较算法的时间复杂度很低,但它需要维护一个二维数组以存储中间状态,这可能会导致较大的内存消耗,尤其是当处理大型文本文件时。对于非常大的文本文件,这可能会成为一个问题;不适用于高度不规则的情况:虽然它可以处理一些变化较大的文本文件,但在处理高度不规则的情况下,可能会出现一些问题。例如:对于arxml的特殊结构,两个文件中可能会存在某个容器相同,但它们的参数顺序不同,这样在使用文本比较时,会被认定为这两个容器有差异,但实际情况是这两个容器并没有区别,仅仅只是参数的顺序不同,对于生产完全没有影响。为此,本专利技术提出了一种文件差异比较方法。


技术实现思路

1、本专利技术旨在克服现有技术的不足,提出了一种文件差异比较方法,以达到实现文件差异比较,尤其是对于arxml等文件的特殊结构的差异比较的目的。

2、为了实现上述目的,本专利技术采取的技术方案为:一种文件差异比较方法,所述方法包括以下步骤:

3、s1、将原始文本文件的数据转换成模型对象;

4、s2、根据原始文本文件的结构,将所述模型对象组成树状结构,所述模型对象即为树状结构的各个节点;

5、s3、根据所述步骤s1、s2得到至少两个树状结构的原始文本文件模型,根据所述树状结构进行差异比较;

6、s4、根据所述步骤s3差异比较的结果,生成差异列表;

7、s5、根据所述差异列表,将差异与选定的原始文本文件模型进行合并,得到更新的原始文本文件。

8、进一步,所述原始文本文件为arxml文件。进一步,在所述步骤s1中,使用artop工具将arxml文件的数据转化成emf模型对象。进一步,将emf模型对象简化,只保留emf模型对象的shortname以及参数属性并存于自定义对象中,所述自定义对象构成新的模型对象。

9、进一步,在所述步骤s3中,对于根据所述步骤s1、s2得到的两个树状结构的原始文本文件模型a和b,所述差异比较的方法包括:

10、s31、比较所述树状结构的原始文本文件模型a和b的一级节点,当一级节点不一致时,说明两个文件不同;当一级节点相同时,则继续比较下级节点;

11、s32、将a的所有n级节点,分别与b的所有n级节点进行比较,当a的一个n级节点a与b的所有n级节点都不同时,则n级节点a仅存在于a中,不存在b中,即a比b多一个n级节点a;

12、s33、将b的n级节点,分别与a的n级节点进行比较,与所述步骤s32相同,找出b比a多的n级节点;

13、s34、当a的n级节点与b的n级节点相同时,则继续比较n+1级节点,令n=n+1,运用递归算法重复所述步骤s32、s33、s34,直至找出a和b所有下级节点的差异;

14、s35、当a的n级节点a与b的n级节点b相同且它们都拥有参数属性时,则比较它们的参数属性:将a和b的参数名、参数值分别存于两个map集合中然后通过所述步骤s32、s33、s34的方法,找出a比b多出的参数属性、b比a多出的参数属性、a和b参数名相同但参数值不同的参数属性。

15、进一步,在所述步骤s4中,所述差异列表包括由所述步骤s1和s2得到的树状结构的原始文本文件模型和结果文本文件模型,其中:所述树状结构的原始文本文件模型之间进行差异比较,差异比较产生的差异项存储于所述结果文本文件模型中。

16、进一步,选择所述树状结构的原始文本文件模型中的一个作为基准文件,并对所述结果文本文件模型中的差异项进行标记,其中:基准文件比其余文件模型多的差异项标记为del;基准文件比其余文件模型少的差异项标记为add;基准文件与其余文件模型相同但参数有修改的差异项标记为modify。

17、进一步,所述差异列表设置有checkbox,通过checkbox勾选需要存储于所述结果文本文件模型中的差异项,再将所述结果文本文件模型与选定的基准文件进行合并,得到更新后的原始文本文件。

18、进一步,本专利技术的差异列表可通过ui界面进行展示。

19、进一步,在所述步骤s5中,对于进行差异比较的两个原始文本文件,合并操作包括:

20、(1)保留更新,即保留所述选定的基准文件的原始数据,只将add类型的差异项添加至所述选定的基准文件中;

21、(2)覆盖更新,即删除所述选定的基准文件,选择参与差异比较的另一个原始文本文件模型将其改名为所述选定的基准文件的名称,并只在该原始文本文件模型中添加del类型的差异项;

22、(3)手动更新,即手动选择差异项进行基准文件的保留或者覆盖更新。

23、本专利技术的技术效果为:(1)本专利技术可应用于arxml文件等特殊文本结构,应用广泛;(2)本专利技术通过将文件转化为模型再进行对比,可以有效解决本文档来自技高网...

【技术保护点】

1.一种文件差异比较方法,其特征在于:所述方法包括以下步骤:

2.根据权利要求1所述的一种文件差异比较方法,其特征在于:所述原始文本文件为ARXML文件。

3.根据权利要求2所述的一种文件差异比较方法,其特征在于:在所述步骤S1中,使用Artop工具将ARXML文件的数据转化成EMF模型对象。

4.根据权利要求3所述的一种文件差异比较方法,其特征在于:将EMF模型对象简化,只保留EMF模型对象的ShortName以及参数属性并存于自定义对象中,所述自定义对象构成新的模型对象。

5.根据权利要求1所述的一种文件差异比较方法,其特征在于:在所述步骤S3中,对于根据所述步骤S1、S2得到的两个树状结构的原始文本文件模型A和B,所述差异比较的方法包括:

6.根据权利要求1所述的一种文件差异比较方法,其特征在于:

7.根据权利要求6所述的一种文件差异比较方法,其特征在于:

8.根据权利要求6所述的一种文件差异比较方法,其特征在于:所述差异列表设置有CheckBox,通过CheckBox勾选需要存储于所述结果文本文件模型中的差异项,再将所述结果文本文件模型与选定的基准文件进行合并,得到更新后的原始文本文件。

9.根据权利要求7或8所述的一种文件差异比较方法,其特征在于:在所述步骤S5中,对于进行差异比较的两个原始文本文件模型,合并操作包括:

10.根据权利要求1或7或8任一项所述的一种文件差异比较方法,其特征在于:所述差异列表通过UI界面进行展示。

...

【技术特征摘要】

1.一种文件差异比较方法,其特征在于:所述方法包括以下步骤:

2.根据权利要求1所述的一种文件差异比较方法,其特征在于:所述原始文本文件为arxml文件。

3.根据权利要求2所述的一种文件差异比较方法,其特征在于:在所述步骤s1中,使用artop工具将arxml文件的数据转化成emf模型对象。

4.根据权利要求3所述的一种文件差异比较方法,其特征在于:将emf模型对象简化,只保留emf模型对象的shortname以及参数属性并存于自定义对象中,所述自定义对象构成新的模型对象。

5.根据权利要求1所述的一种文件差异比较方法,其特征在于:在所述步骤s3中,对于根据所述步骤s1、s2得到的两个树状结构的原始文本文件模型a和b,所述差...

【专利技术属性】
技术研发人员:王友商林刚胡红利倪斌
申请(专利权)人:吉孚汽车技术苏州有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1