Java 使用RecursiveElementNameAndTextQualifier(XMLUnit)
我需要比较两个XML文件,它们都有不同的实体顺序Java 使用RecursiveElementNameAndTextQualifier(XMLUnit),java,unit-testing,xmlunit,Java,Unit Testing,Xmlunit,我需要比较两个XML文件,它们都有不同的实体顺序 <root> <parent1> <parent2> <value>1</value> </parent2> <parent2> <value>2</value> </parent2> </parent1> <parent1>
<root>
<parent1>
<parent2>
<value>1</value>
</parent2>
<parent2>
<value>2</value>
</parent2>
</parent1>
<parent1>
<parent2>
<value>3</value>
</parent2>
<parent2>
<value>4</value>
</parent2>
</parent1>
</root>
如上例所示,如果在另一个xml文件中交换1和2的位置,测试应该通过。我正在使用diff.overrideElementQualifiernew RecursiveElementName和TextQualifier来实现此目的,但它始终未能通过测试
您能告诉我问题出在哪里吗?递归元素名称和文本限定符适用于非常特定的用例,这就是为什么我们从未将其从示例包中提升出来
它告诉XMLUnit,当且仅当元素a和元素b的元素名匹配且嵌套文本相同,并且它们的所有子节点也按照它们作为子节点出现的顺序使用RecursiveElementNameAndTextQualifier进行限定时,才比较元素a和元素b
在您的示例中,如果交换1和2,则第一个parent1元素将不再符合条件,因为其子元素不符合严格的顺序
您需要的是一个专门的ElementQualifier实现,因为没有内置的限定符能够完全满足您的需要