如何在Eclipse中定制自己的比较中心

Eclipse 比较中心介绍

目前,">Eclipse 支持任何两个相同类型的文件的比较,例如选中两个相同类型文件 -> 右键 ->Compare with->Each other,Eclipse 会根据文件类型进行比较,通常我们用到的是文本比较,因此本文中也是针对文本比较进行功能上的丰富和扩展。

如下图为 Eclipse 的比较过程,Eclipse 的比较主要分为两部分,第一部分为内容匹配比较,并将结果显示出来;第二部分是针对比较结果,同步合并差异,达到修改模型的目的,同时也可以自定制其他操作如保存、生成报表等。本文侧重介绍第一部分。

图 1. Eclipse 的比较过程

如图所示,首先,Eclipse 比较中心会根据比较文件生成基础模型,基础模型中包含模型匹配的最小元素, Eclipse 会针对这些元素进行相似元素的匹配比较,生成包含差异的比较模型并显示在 Eclipse 编辑器中。然后,通过编辑器中定义的操作对元素进行同步,生成最终模型。

在这个过程中,我们可以自定义的部分有哪些呢?

首先,在生成基础模型的时候,我们可以针对需求,将需要进行比较的内容筛选出来,按照模型中的层次生成对应的元素;然后,在元素匹配上,可以定义自己的匹配原则,这就使得即便模型中的元素无法完全匹配,但仍可以通过自己的原则强制匹配,进而可以进行比较;接着便是定义自己的比较规则,通过比较规则可以在逻辑上认定元素之间的区别,而不是生硬的字符串比较;最后,便是在比较结果上进行自定义操作,开发人员可以根据需求定制不同操作,比如将差异同步到另一端,保存比较结果,生成比较结果报表等。

结果预览

本文主要侧重介绍如何在已有的 Eclipse 中定制比较规则,清晰的显示被比较对象的差异,为了使读者带有更强的目的性来阅读本文,首先介绍本文中的实例的最终结果。

比较对象

本文中选取的比较对象为 *.xml 文件,利用 dom4j 解析 xml 文件,并根据需要生成基本模型。

Xml 的简要的人口统计数据,是一个非常简单的源,也降低了在比较过程中的逻辑,便于理解。

清单 1. xml 文件的基本内容

<?xml version="1.0" encoding="UTF-8"?> <country id="Country1" Country="China" population="1,341M" year="2010"> <Province id="p1" Province="BeiJing" population="1,961"> <city id="c1" City="BeiJing" population="1,961"> </city> </Province> <Province id="p2" Province="JiLin" population="2,746"> <city id="c1" City="ChangChun" population="767"> </city> <city id="c2" City="JiLin" population="441"> </city> <city id="c3" City="SongYuan" population="288"> </city> <city id="c4" City="OtherCity" population="1,
250"> </city> </Province> </country>

Xml 文件的基本内容如清单 1 所示,分三个层次来统计人口信息,分别是 Country, Province,City。每个层次对应人口信息添加在"population"属性中,在 Country 层中,标识出年份信息,如清单 1 中为 2010 年信息。

创建同样一份结构相同,数据不同的 *.xml 文件来保存 2011 年人口信息。

注:此信息仅供试验用途。

比较结果预览

我们首先使用 Eclipse 已有的比较功能对两个 *.xml 文件进行比较,结果如图所示。

图 2. 使用 Eclipse 进行比较

下图为使用自定义比较中心进行比较的结果,比较结果将根据城市等级,依次展示不同城市的人口数量。

图 3. 使用自定义比较中心进行比较

对比 Eclipse 自身的比较和自定义的比较结果。在后者的比较结果中,过滤文件中的冗余无用信息,能够清晰的显示出所关注的内容,一目了然。同时对于不熟悉源文件结构的使用者,自定义的结果更便于直接突出内容,降低使用者与源文件的耦合程度,方便进行数据分析及后续处理。

时间: 2024-12-24 19:17:10

如何在Eclipse中定制自己的比较中心的相关文章

中文观点句 软件-这个软件老师给的如何在eclipse中运行,有点大,大神帮帮忙

问题描述 这个软件老师给的如何在eclipse中运行,有点大,大神帮帮忙 http://pan.baidu.com/s/1zeDjd

如何在eclipse中跑apache kylin;

问题描述 如何在eclipse中跑apache kylin: 用eclipse导入kylin的jar包,然后通过eclipse生成cube,而且能够在web端检测到,能做到吗? 解决方案 http://www.mamicode.com/info-detail-936729.html

批量删除-如何在eclipse中删除多行首字母

问题描述 如何在eclipse中删除多行首字母 在做一个试题,里面的题目的代码都是标有序号的,怎么批量删除呢?一条条删除太浪费时间!例如下面,怎么把10.,20.,30.,...这些序号批量删除呢? interface Jumper{public void jump();} ... class Animal{} ... class Dog extends Animal{ Tail tail; } ... class Beagle extends Dog implements Jumper{ pu

eclipse 查找功能-如何在eclipse中 按一定的条件查找java文件?

问题描述 如何在eclipse中 按一定的条件查找java文件? 我想在eclipse使用查找java文件的功能,具体的操作如下: 希望在包名符合 *.controller的包中查找 含有event字符的java文件,该如何操作? thank you in advance! 解决方案 ctrl+H 然后用正则

我有一个编译好的libusb.so文件,请问如何在eclipse中调用?

问题描述 我有一个编译好的libusb.so文件,请问如何在eclipse中调用? android开发,实现usb跟手机的数据传输问题,很急,望大神帮忙! 解决方案 Linux下C++ Eclipse调用so文件调用.so文件windows下编译使用NDK,调用SO文件 解决方案二: http://blog.csdn.net/gf771115/article/details/19577355

求教这份用java写的仿qq源码如何在eclipse中运行

问题描述 求教这份用java写的仿qq源码如何在eclipse中运行 http://pan.baidu.com/s/1mhcv3LY 这是源码的下载地址 求大神的详细指教....java小白搞这个好烦恼 http://www.hainanhi.com/forum.php?mod=viewthread&tid=12702&page=1&authorid=1 这是代码说明的地址 解决方案 按照提示,先下载mysql的驱动,并且添加到你的jar包目录.安装和配置好mysql,根据你的配置

测试用例-如何在Eclipse中获取Ant运行的结果数据

问题描述 如何在Eclipse中获取Ant运行的结果数据 我想让Ant运行测试用例,并得出测试结果,这一步已经实现了.那么我如何让Eclipse得到Ant 运行的结果呢? 解决方案 同问啊,兄台有答案了共享一下啊

sqlite3-如何在eclipse中建立数据库并与SQLite developer连接

问题描述 如何在eclipse中建立数据库并与SQLite developer连接 如题,如何在eclipse中代码建立数据库,或者用哪种更为简洁的方法能够建立数据库并与SQLite developer连接,我尝试用SQLite3,但是显示SQLite3不是内部或外部命令,也不是可运行的程序或批处理文件.求大神指教 解决方案 你是用什么语言? 你试试idea吧,idea直接可以连接多种数据库,并且可以可视化管理. 解决方案二: 没有听说在eclispe建立数据库的,eclipse能够与数据库连接

eclipse插件-如何在eclipse中集成jad反编译工具

问题描述 如何在eclipse中集成jad反编译工具 在eclipse中怎么集成jad反编译这个插件,下载哪个版本的jar包,与eclipse的版本有木有什么冲突??求大神指点!! 解决方案 参考这个来吧.http://www.blogjava.net/sy1214520/archive/2008/06/20/209371.html 解决方案二: eclipse中集成jad 为啥你不相信百度呢 解决方案三: http://blog.csdn.net/sushengmiyan/article/de