微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XmlUnit - 如何忽略命名空间前缀并比较 2 个 xml 文件?

如何解决XmlUnit - 如何忽略命名空间前缀并比较 2 个 xml 文件?

我有两个 xml 文件。第一个包含命名空间前缀,第二个不包含。因此,当我断言它们时,我想忽略这些前缀并检查是否相等。

 @Test
    public void test1(){
        String control = "<prefix1:element xmlns:prefix1=\"namespace\" >Some text</prefix1:element>";
        String test = "<element xlmns=\"namespace\">Some text</element>";

        XmlAssert.assertthat(controlElement).and(testElement)
                .ignoreChildNodesOrder()
                .ignoreComments()
                .ignoreWhitespace()
                .withNodeMatcher(new DefaultNodeMatcher((ElementSelector) (control,test)->
                {
                return control!=null && test !=null && Objects.equals(control.getLocalName(),test.getLocalName());
                }
                ))
                .withDifferenceEvaluator((comparison,outcome)->{
                    System.out.println(comparison);
                    System.out.println(outcome);
                    if (outcome == ComparisonResult.EQUAL){
                        return outcome;
                    }
                    if (comparison.getType() == ComparisonType.NAMESPACE_URI
                    || comparison.getType()==ComparisonType.NAMESPACE_PREFIX){
                        System.out.println("aaaa");
                        return ComparisonResult.SIMILAR;
                    }
                    return outcome;
                })
                .areSimilar();
    }

因此,此测试未通过,我收到以下消息:

java.lang.AssertionError: 
Expecting:
 <<prefix1:element xmlns:prefix1="namespace">Some text</prefix1:element>>
to be equal to:
 <<element xlmns="namespace">Some text</element>>
but was not.

我需要的是 - 这个测试用例应该通过,因为所有的节点和值都是相等的。基本上,一种忽略前缀的方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。