在找到XML

时间:2017-10-12 15:34:13

标签: java xml excel xmlunit-2

首先感谢这个伟大的实用程序" XMLUnit"。

我有一个要求,我想比较2个XML并找出差异。一旦找到差异,我需要生成一个excel报告,它将显示整个XML数据(类似数据以及不同数据)。数据的相似点和不同点将在此Excel中使用某种颜色突出显示。

实施例 -

第一个XML -

    <Project>
    <Policy>
        <Amount>20</Amount>
        <Balance>10</Balance>
        <PolicyDetails>
            <Amount>30</Amount>
            <SendDate>2017-04-03</SendDate>
        </PolicyDetails>
        <PolicyDetails>
            <Amount>100</Amount>
            <SendDate>2017-04-02</SendDate>
        </PolicyDetails>
        <PolicyDetails>
            <Amount>50</Amount>
            <SendDate>2016-04-02</SendDate>
        </PolicyDetails>
    </Policy>
</Project>

第二个XML -

    <Project>
    <Policy>
        <Amount>10</Amount>
        <Balance>10</Balance>
        <PolicyDetails>
            <Amount>50</Amount>
            <SendDate>2017-04-03</SendDate>
        </PolicyDetails>
        <PolicyDetails>
            <Amount>100</Amount>
            <SendDate>2017-05-05</SendDate>
        </PolicyDetails>
    </Policy>
</Project>

现在我需要找到这些XML的相同点和不同点,并生成一个将数据显示为excel的Excel -

enter image description here

我知道我可以逐个阅读使用JAVA的XML并执行此操作但实际的XML将具有不同的数据组合,其中排序可能不同等。

到目前为止我做了什么 - 我使用过XMLUnit 2&#34; DiffBuilder&#34;并发现了这些XML的所有不同之处。我甚至将自定义的DifferenceEvaluator用于某些自定义逻辑。

我想弄清楚如何在excel中以所需的格式编写差异和相似之处。有人可以帮我吗?

我还想过实现ComparisonListener并抓住每个相似性和差异,并从excel开始写这里的数据。

1 个答案:

答案 0 :(得分:0)

我已经做了类似的事情,将每个xml转换为Map<String, String>,其中地图键是xpath。

例如,对于您的第一个XML,我创建了一个像:

的Map
{
    "Project[1]/Policy[1]/Amount[1]": "20",
    "Project[1]/Policy[1]/Balance[1]": "10",
    "Project[1]/Policy[1]/PolicyDetails[1]/Amount[1]": "30",
    "Project[1]/Policy[1]/PolicyDetails[1]/SendDate[1]": "2017-04-03",
    "Project[1]/Policy[1]/PolicyDetails[2]/Amount[1]": "100",
    "Project[1]/Policy[1]/PolicyDetails[2]/SendDate[1]": "2017-04-02",
    // etc
}

然后,您可以比较缺失/不同条目的两个地图。您可以使用xpaths提供一个很好的UI,点击单元格链接到XML中的位置。