2011-06-15 46 views
0

我试着避免问这个问题尽可能长...但我还没有找到任何将完全符合我的需求,这是关于我得到的时间这个项目完成了。比较两个XML文件的特定元素 - 在java

因此,这里是我所需要的:

我在做一个应用程序,将基本diff的两个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,但这些更适合比较和告诉我不同​​之处(包括添加了哪些额外的行,我不感兴趣)。

那么,实现两行代码的任何好主意,这只是神奇地完成自己?因为这将是伟大的:)

回答

2

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

查看类似问题讨论和解决here

+0

我和你在一起。我也添加了同样的[问题](http://stackoverflow.com/questions/6047505/how-to-compare-and-merge-two-xml-using-xslt/6060359#6060359)亲自回答。 – 2011-06-15 16:53:49

+0

@empo - 谢谢。我已经看到很多例子了。 – 2011-06-15 16:59:37

+0

是的,有人打“很容易”的按钮,因为,好......很明显的原因。 – Aelfhere 2011-06-15 19:59:57