使用XMLUnit进行XML比较

时间:2014-01-31 11:13:25

标签: java xml junit xmlunit

我想使用XMLUnit比较两个XML文件(我不想重新发明已存在的东西)。

XML 1:

<?xml version="1.0"?>
<Product>
    <Property>
        <Container value="1">Test 01</Container>
        <Container value="3">Test 02</Container>
        <Container value="5">Test 03</Container>
    </Property>
</Product>

XML2:

<?xml version="1.0"?>
<Product>
    <Property>
        <Container value="3">Test 01</Container>
        <Container value="7">Test 02</Container>
        <Container value="1">Test 03</Container>
        <Container value="5">Test 04</Container>
    </Property>
</Product>

我想仅在节点和属性匹配时才比较元素。此外,如果位置不同,那么它应该是相似的。

我尝试使用DetailedDiff,但它显示了很多结果,但我只想提取具体的更改。请给你的段落。

1 个答案:

答案 0 :(得分:1)

如果您正在进行与订单无关的比较,那么ElementQualifier会有所帮助:

http://xmlunit.sourceforge.net/userguide/html/ar01s03.html

  

在某些情况下,两段XML中的元素顺序可能并不重要。如果是这样,DifferenceEngine需要帮助确定要比较的元素。这是ElementQualifier的工作(参见第3.4节“ElementQualifier”)。

具体来说,ElementNameAndAttributeQualifier似乎符合您的要求:

  

只有具有相同名称的元素 - 和名称空间URI(如果存在) - 以及ElementNameAndAttributeQualifier的构造函数中给出的所有属性的相同值才符合条件。