java XMLunit仅比较标记

sgtfey8w  于 2023-02-18  发布在  Java
关注(0)|答案(2)|浏览(94)

我想比较两个XML文件,但仅基于标签值,我还需要比较标签作为一个整体,例如。
<someTag><otherTag value1="0" value2="5"/>text1</someTag>
<someTag><otherTag value1="10" value2="15"/>text2</someTag>
我需要实现的是显示<otherTag value1="10" value2="15"/>是不同的,我不关心text1text2的不同。问题是,默认情况下,XMLUnit将分别比较value1value2,而我想将它们一起比较,整个标签作为一个字符串。有没有办法做到这一点?我知道我可以排除text实现DifferenceEvaluator,但仍然,我不知道如何比较属性作为一个整体。我也考虑使用xslt。

xqnpmsa8

xqnpmsa81#

我将转换这两个文档,以去除您希望从比较中排除的内容,然后比较结果。

x7yiwoj4

x7yiwoj42#

我认为您可以将DifferenceEvaluators链接在一起来实现这一点。
例如,这是我在两个节点之间合并比较时所做的事情,在您的情况下,可以进行一些自定义。

Diff myDiff = DiffBuilder.compare(FileReadingUtil.readFileAsByteArray(source,this.getClass().getClassLoader()))
                .withTest(FileReadingUtil.readFileAsByteArray(test,this.getClass().getClassLoader()))
                .ignoreComments()
                .ignoreWhitespace()
                .withDifferenceEvaluator(
                        DifferenceEvaluators.chain(
                                DifferenceEvaluators.Default,
                                new IgnoreAttributeDifferenceEvaluator("MsgId"),
                                new IgnoreAttributeDifferenceEvaluator("PmtId")
                        )
                )
                .checkForSimilar()
                .build();

相关问题