XMLUNIT 忽略 xmlns?

2023-12-01

尝试获取这两个类似的 XML(想要忽略 xmlns)和不同的元素序列,但对我来说无法正常工作。如果删除 xmlns,则 doc 是 simmilr。 我正在使用 XMlUnit 1.5

String s1 = "<root xmlns=\"http:example.com\">"
                        +"<Date/>"
                        +"<Time/>"
                     +"</root>";

String s2 = "<root>"
                      +"<Time/>"
                      +"<Date/>"
                   +"</root>";
myDiff = XMLUnit.compareXML(s1,s2);

您需要做两件事:

  • 为了忽略不同的名称空间,您需要提供DifferenceListener从而缩小差异
  • 默认值ElementQualifier被使用过Diff is ElementNameQualifier仅比较具有相同本地名称和命名空间 URI 的元素。您还需要覆盖这个。

    Diff xmlDiff = new Diff(s1, s2);
    xmlDiff.overrideElementQualifier(new ElementNameQualifier() {
            @Override
            protected boolean equalsNamespace(Node control, Node test) {
                return true;
            }
        });
    xmlDiff.overrideDifferenceListener(new DifferenceListener() {
            @Override
            public int differenceFound(Difference diff) {
                if (diff.getId() == DifferenceConstants.NAMESPACE_URI_ID) {
                    return RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL;
                }
                return RETURN_ACCEPT_DIFFERENCE;
            }
            @Override
            public void skippedComparison(Node arg0, Node arg1) { }
        });
    

创建“相似”的结果。为了获得“相同”的结果,您还需要降级CHILD_NODELIST_SEQUENCE_ID差异。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XMLUNIT 忽略 xmlns? 的相关文章

随机推荐