首先感谢这个伟大的实用程序" 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 -
我知道我可以逐个阅读使用JAVA的XML并执行此操作但实际的XML将具有不同的数据组合,其中排序可能不同等。
到目前为止我做了什么 - 我使用过XMLUnit 2&#34; DiffBuilder&#34;并发现了这些XML的所有不同之处。我甚至将自定义的DifferenceEvaluator用于某些自定义逻辑。
我想弄清楚如何在excel中以所需的格式编写差异和相似之处。有人可以帮我吗?
我还想过实现ComparisonListener并抓住每个相似性和差异,并从excel开始写这里的数据。
答案 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中的位置。