一 需求

实现比对两个文件,第三种方法,使用 xmlUnit 库,可以比对 xml 的工具。

二 实例

2.1 准备

  1. 创建 maven 项目
  2. 导入 xmlUnit 库到 pom.xml 文件中
     <dependency><groupId>xmlunit</groupId><artifactId>xmlunit</artifactId><version>1.6</version><scope>test</scope></dependency><dependency><groupId>org.xmlunit</groupId><artifactId>xmlunit-core</artifactId></dependency><dependency><groupId>xmlunit</groupId><artifactId>xmlunit</artifactId><version>1.6</version><scope>compile</scope></dependency>
  1. 准备两个待比较的文件(最好是文本文件),我这里准备的是 xml 文件,文件内容参考上篇文章。

2.2 代码实例

public class compareXML {public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException {DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();File file1 = new File("C:\\preconfig.xml");File file2 = new File("C:\\postconfig.xml");Document doc1 = docBuilder.parse(file1);Document doc2 = docBuilder.parse(file2);// SOLUTION 1: Are the files "similar"?
//        Diff diff = new Diff(doc1, doc2);
//        System.out.println("Similar (true/false): " + diff.similar());// SOLUTION 2: Should you want detailed differences (especially useful for deeply nested files)Diff diff = new Diff(doc1, doc2);diff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());DetailedDiff detailedDiff = new DetailedDiff(diff);List list = detailedDiff.getAllDifferences();for(int i = 0; i < list.size(); i++){System.out.println(list.get(i));}}
}

2.3 结果

执行main 函数后显示结果类似:

三 说明

通过结果发现该方法的结果不是很直观,不是容易理解。如果想要比较直观的结果或者高亮显示之类的仍需要进一步解析及处理。好处是如果只需要获得两个文件是否一致的结论,该库很容易就实现了。该示例只是用到了很少的一部分功能,还有其他许多功能读者可以自行研究,使用 xmlUnit 库虽然比对的结果不是很直观,但是比对的方式有很多。

java 文件比对(三)-- 使用 xmlUnit相关推荐

  1. 【Java文件操作(三)】递归复制文件夹内所有文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  2. Java文件复制的三种方法

    //1.使用nio进行文件复制.这种复制后,源文件还在. public void copy(){String path = "D:\\xx";try(FileChannel in ...

  3. 【Java文件操作(八)】将控制台输出重定向到txt文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  4. 【Java文件操作(七)】序列化:将自定义类写入文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  5. 【Java文件操作(六)】借助内存复制图片:ByteArrayOutputStream\ByteArrayInputStream\FileOutputStream\FileInputStream辨析

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  6. 【Java文件操作(五)】从txt文件中读取字符串、乱码原因

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  7. 【Java文件操作(一)】递归打印文件目录

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java 文 ...

  8. java文件出现字符串_找出三个文本文件中都出现的字符串,并输出到一个文本文件(菜鸟求救)...

    编写java程序 找出三个文本文件中都出现的字符串,并输出到一个文本文件 下面是三个文本文件,找出其中相同的字符串(用数组的方法) 第一个文件: EEF1A1 GAPDH LOC643334 SLC3 ...

  9. maven 打包时缺少文件_(三)Java资源文件和路径相关扫盲

    本来打算接着上文直接写登录功能的,顺便介绍下SpringSecurity,但是SpringSecurity和Spring以及SpirngBoot是如何衔接的又是个较为复杂的事情.看了下SpringBo ...

  10. info java module_JAVA新特性视频教学:第三天_21_认识module-info.java文件.mp4

    本套Java 8和9 JDK新特性学习课程目录如下: 第一天Java视频课程学习内容:01_课程介绍 02_Java版本特性更新历史 03_面向对象的Runnable接口写法 04_编程思想转换 05 ...

最新文章

  1. Android 获取App的版本号与版本名称的2中方法
  2. 第08次:升级《陋习手记》完善主从UI
  3. (11)调用门提权(有参)
  4. linux tomcat 日志路径,linux日志文件在哪 linux安装tomcat
  5. Altium Designer20新建项目\导入库\绘制原理图\导入pcb\绘制pcb
  6. twisted系列教程十七–用inlineCallbacks来管理callbacks
  7. 关于如何调用Datalist里面的Datalist
  8. upper_bound 和lower_bound彻底搞懂
  9. jenkins pipeline_Jenkins流水线(pipeline)实战之:从部署到体验
  10. java编译命令是什么_Java编译命令整理
  11. hadoop安装教程
  12. 做word计算机海报图片,怎么用word制作海报 海报制作方法
  13. Java高级之HashMap中的put()方法和putIfAbsent()方法
  14. 4s团队项目前端layui整合使用步骤
  15. 冒泡排序--咕噜咕噜
  16. 算法创作|模拟商品加入购物车并结算价钱问题解决方法
  17. 2012 SDCC中国软件开发者大会门票社区团购火热开启!
  18. C#超市进销存系统管理源码(CS架构)
  19. C++ STL函数 map (henu.hjy)
  20. pip安装及matplotlib安装

热门文章

  1. 机器学习(8): 逻辑回归算法 小结及实验
  2. 蓝丝雨第十四季商业实战系列(全民奇迹中控台实战)
  3. android addr2line 用法,分析安卓ANR tombstone使用ndk-stack addr2line
  4. 语音合成1700多个中文音频
  5. 总结:OSI七层协议
  6. IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略
  7. DNS服务器安装(linux)
  8. 如何修改远程服务器登录密码
  9. linux微信电脑版登录不了,默认Windows与Deepin系统下的微信电脑版目录
  10. 计算机酷我音乐文件夹,酷我音乐缓存文件在哪?打开酷我音乐缓存文件的方法...