我正在尝试比较两个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,但我不想使用它。
答案 0 :(得分:0)
您可以使用jaxb解析xml并使用unmarshall方法构造java对象,并比较生成的对象。
请在此处查看:How to compare jaxb, object, string to find differences
您还可以使用google diff-match-patch api将您的两个xml作为字符串和补丁进行比较以创建新的。
https://code.google.com/archive/p/google-diff-match-patch/
Diff demo: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