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

Java 比较两个xml文件并获得差异,java,xml,dom,Java,Xml,Dom,我试图比较两个XML文件。我的要求是比较新旧xml文件,如果有任何差异,将其合并到新的xml文件中 下面的代码片段告诉我这两个文件是否相等 public static void compare() throws SAXException, IOException, ParserConfigurationException{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNames

我试图比较两个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));
}
但我也想要区别。请告诉我如何才能得到差异


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

您可以使用jaxb解析xml,使用unmarshall方法构造java对象,并比较生成的对象

请看这里:

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

差异演示: 补丁演示:


github上提供了源代码:

您可以使用jaxb解析xml,使用unmarshall方法构造java对象,并比较生成的对象

请看这里:

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

差异演示: 补丁演示:


源代码可在github上获得:

在我的例子中,xml的格式不同:,我有多个这样的标签,java本身有没有办法做到这一点。我不想使用第三方api。我们不能利用DocumentBuilderFactory吗?不要重新发明轮子,区分两个文件并不容易。我认为使用经过测试的好api是最好的选择。在我的例子中,xml的格式不同:,我有多个这样的标签,java本身有没有办法做到这一点。我不想使用第三方api。我们不能利用DocumentBuilderFactory吗?不要重新发明轮子,区分两个文件并不容易。我认为使用经过测试且良好的api是您的最佳选择。