将类似的xml文件与XmlUnit与无序标记进行比较(具有不同属性的相同标记名称)

gre*_*uze 6 java xml xmlunit

我正在尝试成功运行XmlUnit,对我的工作非常有帮助.现在,我有一点问题,我不知道如何解决.我有一个java类,它有一个Set,当它转换为XML时,里面的元素可以有任何顺序.

当我在XmlUnit中尝试这两个文件时,它可以工作(Diff说它们是相似的):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Monitor>
    <AvailableMeasures>
        <MeasureDescriptorA name="netInput_mynetwork"></MeasureDescriptorA>
        <MeasureDescriptor name="netInput_myothernetwork"></MeasureDescriptor>
    </AvailableMeasures>
</Monitor>
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Monitor>
    <AvailableMeasures>
        <MeasureDescriptor name="netInput_myothernetwork"></MeasureDescriptor>
        <MeasureDescriptorA name="netInput_mynetwork"></MeasureDescriptorA>
    </AvailableMeasures>
</Monitor>
Run Code Online (Sandbox Code Playgroud)

但是当标签具有相同的名称(具有不同的属性)时,它不起作用(它混合了属性,并期望另一个标签中的属性):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Monitor>
    <AvailableMeasures>
        <MeasureDescriptor name="netInput_myothernetwork"></MeasureDescriptor>
        <MeasureDescriptor name="netInput_mynetwork"></MeasureDescriptor>
    </AvailableMeasures>
</Monitor>
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Monitor>
    <AvailableMeasures>
        <MeasureDescriptor name="netInput_mynetwork"></MeasureDescriptor>
        <MeasureDescriptor name="netInput_myothernetwork"></MeasureDescriptor>
    </AvailableMeasures>
</Monitor>
Run Code Online (Sandbox Code Playgroud)

有没有解决方法?

gre*_*uze 6

我自己找到了解决方案.

Diff diff = new Diff(controlXml, responseXml);
diff.overrideElementQualifier(new ElementNameAndAttributeQualifier());
Run Code Online (Sandbox Code Playgroud)