gpt4 book ai didi

java - XMLUNIT 忽略 xmlns?

转载 作者:行者123 更新时间:2023-11-30 09:01:02 26 4
gpt4 key购买 nike

尝试让这两个 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 来降低差异
  • Diff 使用的默认 ElementQualifierElementNameQualifier,它只比较具有相同本地名称和命名空间 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 差异。

关于java - XMLUNIT 忽略 xmlns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26524286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com