1.工具:Xmlunit 2.实现
//待比较文本、目标文本 public static List<Difference> compare(Document source, Document target) throws Exception { Diff diff = new Diff(source, target); XMLUnit.setIgnoreAttributeOrder(true);//忽略属性位置 XMLUnit.setIgnoreComments(true);//忽略注解 XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true); XMLUnit.setIgnoreWhitespace(true);//忽略空白 diff.overrideDifferenceListener(new IgnoreTextAndAttributeValuesDifferenceListener());//忽略文本值和属性值 diff.overrideElementQualifier(new ElementNameAttrAndChildQualifier());//覆盖节点比较方式 if (diff.similar()) return Lists.newArrayList(); DetailedDiff dd = new DetailedDiff(diff); return dd.getAllDifferences();//将不同重新封装返回 }a、Difference的类型用ID字段区分,DifferenceConstants罗列了所有不同类别。getControlNodeDetail和getTestNodeDetail可分别得到不同节点详情。 b、ElementNameAttrAndChildQualifier为自定义ElementNameAndAttributeQualifier继承扩展类,然后覆盖public boolean qualifyForComparison(Element control, Element test)方法,在里面写如何判断两个节点相同与否。