当前位置: 首页 > 知识库问答 >
问题:

比较两个xml文件并获得差异

刘承悦
2023-03-14

我试图比较两个XML文件。我的要求是比较新旧xml文件,如果有任何差异,将其合并到新的xml文件中。

public static void compare() throws SAXException, IOException, ParserConfigurationException{
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);
    dbf.setCoalescing(true);
    dbf.setIgnoringElementContentWhitespace(true);
    dbf.setIgnoringComments(true);
    DocumentBuilder db = dbf.newDocumentBuilder();

    Document doc1 = db.parse(new File("old.xml"));
    doc1.normalizeDocument();

    Document doc2 = db.parse(new File("new.xml"));
    doc2.normalizeDocument();

   System.out.println (doc1.isEqualNode(doc2));
}

但我也想要差异。请告诉我怎样才能得到不同之处。

我已经尝试过XMLUnit,但我不想使用它。

共有1个答案

宗政安歌
2023-03-14

您可以使用jaxb解析xml并使用unmarshall方法对java对象进行转换,并比较生成的对象。

请看这里:如何比较jaxb、object、string以发现差异

您还可以使用google diff-match-patch api将两个xml作为字符串进行比较,并使用patch创建新的。

Diff演示:https://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_diff.html补丁演示:https://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_patch.html

来源可在github上获得:https://github.com/gerhobbelt/google-diff-match-patch

 类似资料:
  • 我试图比较两个xml文件并显示差异,如果找到的话。 目前,我正在使用XML Diff来查找差异。 也查看了xnode.deepeQuals,但它也返回是否有任何区别。但不是什么区别。 任何帮助都很感激

  • 我有两个数据帧。示例: 每个数据帧都有日期作为索引。两个数据帧具有相同的结构。 我想做的是比较这两个数据帧,找出df2中哪些行不在df1中。我想比较日期(索引)和第一列(香蕉、苹果等),看看它们是否存在于df2和df1中。 我尝试了以下方法: 两个熊猫数据帧并排输出差异-突出差异 比较两个熊猫数据帧的差异 对于第一种方法,我得到这个错误:"异常:只能比较相同标记的DataFrame对象"。我尝试删

  • 问题内容: 我需要比较两个CSV文件并在第三个CSV文件中打印出差异。在我的情况下,第一个CSV是一个名为old.csv的哈希表的旧列表,第二个CSV是包含新旧哈希表的新哈希表。 这是我的代码: 第三个文件是旧文件的副本,而不是更新文件。怎么了 ?我希望你能帮助我,非常感谢! PS:我不想使用diff 问题答案: 问题在于您正在将中的每一行与中的同一行进行比较。只要一个文件中有多余的一行,您就会发

  • 有人请建议我一个工具来比较两个文本文件和保存第二个文本文件的差异。 例

  • 我有两个文件-file1.txt和file2.txt。我想用powershell比较这两个文件,并生成第三个文件(file3.txt),它包含从file1.txt开始的所有行减去file2.txt中的行 你能想出什么办法来做这件事吗?