【问题标题】:Compare XML files from two folders [closed]比较两个文件夹中的 XML 文件 [关闭]
【发布时间】:2019-03-19 12:01:34
【问题描述】:

是否可以比较保存在两个不同文件夹中的 XML 文件(具有相同名称)并找出它们之间的区别?我想比较存储在不同文件夹中的多个 XML 文件以进行测试。我很乐意用任何语言(例如 Java、Groovy 脚本、python 等)来探索这一点,

请添加您的想法。非常感谢您的帮助!

【问题讨论】:

  • 差异的定义是什么? XML 方式还是二进制方式或文本方式?

标签: java python xml groovy compare


【解决方案1】:

在 Python 中:

filecmp: File and Directory Comparisons:

import filecmp
cmp = filecmp.cmp('file_1.xml', 'file_2.xml')

# Files are equal
if cmp:
    continue
else:
    out_file.write('file_1.xml') 

【讨论】:

  • 简洁明了的python。 +1
【解决方案2】:

groovy 使用 xmlunit:

@Grab(group='xmlunit', module='xmlunit', version='1.6')
import org.custommonkey.xmlunit.XMLUnit 

XMLUnit.setIgnoreWhitespace(true)
def r1 = new File('/11/1.xml').newReader("UTF-8")
def r2 = new File('/11/2.xml').newReader("UTF-8")
def diff = XMLUnit.compareXML(r1, r2)
assert diff.similar()

【讨论】:

  • 赞成,因为这是第一个不认为 XML 文件“不同”仅仅因为它们在二进制方面不同的答案。
【解决方案3】:

对于 Java 类似

  public static void main(String[] args) throws IOException {
        File file1 = new File("aaa.xml");
        File file2 = new File("bbb.xml");
        boolean areTwoFilesEqual = FileUtils.contentEquals(file1, file2);
        System.out.println("Two files are equal?" + areTwoFilesEqual);
    }

会用 Apache Commons IO API 解决问题。

【讨论】:

    【解决方案4】:

    您可以使用 TreeOps 可视化工具 https://github.com/treeops/treeops 比较两个 XML 文件。它转换和比较 XML/JSON/CSV 中的树数据。 用户可以通过比较选择要忽略的路径。

    TreeOps 定义了一组数据树转换以促进典型的数据操作:

    • 过滤和删除无关数据
    • 重命名和移动节点 沿着树
    • 扁平化和去扁平化以在树格式和表格格式之间进行转换
    • 在选定节点下使用正则表达式更改节点

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 1970-01-01
      • 2022-01-19
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多