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)方法,在里面写如何判断两个节点相同与否。
本文介绍了XML比较的工具——Xmlunit,详细讲解了其实现过程,包括Difference的类型区分,以及如何通过自定义ElementNameAttrAndChildQualifier扩展ElementNameAndAttributeQualifier来判断两个XML节点是否相同。
2162

被折叠的 条评论
为什么被折叠?



