比较特定元素的两个xml文件 - 在java中

时间:2011-06-15 15:15:49

标签: java xml xpath

我尽量避免尽可能长时间地问这个问题......但我没有找到任何能完全满足我需求的东西,而且这是我完成这个项目的时候了。

所以这就是我的需要:

我正在创建一个基本上会对两个xml文档进行区分的应用程序,然后对其中一个进行细微更改。我有一个模板xml,然后另一个xml文件每次都会更改。我只需要确定模板中的关键元素是否在另一个文件中。可以忽略任何额外的东西,但应添加缺少的关键元素。

视觉表现:

模板

<root attribute="asd">
    <a />
    <b>
        <c asdf="fdsa" />
    </b>
</root>

其他xml

<root>
    <a d="wer" />
    <b>
        <c />
    <b>
    <d />
</root>

最终结果:

<root attribute="asd">
    <a d="wer" />
    <b>
        <c asdf="fdsa" />
    </b>
    <d />
</root>

我的问题:

有没有办法在没有仔细检查每个关键元素并确保它们存在的情况下完成最终结果?我已经研究了XPath,这似乎是我迄今为止最好的解决方案,只需检查是否存在必要的部分,然后添加它们,如果它们不存在(我将创建一个新文件,所以写入新的元素并不是非常麻烦)。但是,由于我需要检查很多东西,我宁愿不这样做。我也查看了XMLUnit和XOM,但这些看起来更适合比较并告诉我差异(包括添加额外行的位置,我不感兴趣)。

那么,实现两行代码并让它神奇地完成自己的任何好主意呢? Cuz那将是伟大的:)

1 个答案:

答案 0 :(得分:2)

我应该能够使用XSLT来做到这一点,我想。不是两行代码 - 根本没有代码,只是XSLT文件中合并启发式的合适定义。

查看已解决的类似问题并解决here