XML比较

来源:互联网 发布:广西百色广电网络 编辑:程序博客网 时间:2024/06/05 15:03

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)方法,在里面写如何判断两个节点相同与否。

原创粉丝点击