1

我需要比较两个具有不同实体顺序的 XML 文件。

 <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.overrideElementQualifier(new RecursiveElementNameAndTextQualifier())为此目的使用,但它一直未能通过测试!

你能告诉我问题是什么吗?

4

1 回答 1

0

RecursiveElementNameAndTextQualifier适用于非常具体的用例,这就是为什么我们从未将其从examples包装中推广出来。

它告诉 XMLUnit 比较元素a和元素b,如果(且仅当)它们的元素名称匹配并且它们的嵌套文本相同并且它们的所有子节点也符合使用RecursiveElementNameAndTextQualifier 它们作为子节点出现的顺序

在您的示例中,如果您交换1并且2第一个parent1元素将不再符合条件,因为它的子元素不符合使用严格顺序的条件。

您需要的是一个专门的ElementQualifier实现,因为没有内置限定符完全符合您的要求。

于 2015-02-03T17:14:28.687 回答