Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较两个xml文件中的特定元素——在java中_Java_Xml_Xpath - Fatal编程技术网

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

比较两个xml文件中的特定元素——在java中,java,xml,xpath,Java,Xml,Xpath,我尽量避免问这个问题。。。但我还没有找到任何能完全满足我需要的东西,现在是我完成这个项目的时候了 所以我需要的是: 我正在制作一个应用程序,它将基本上区分两个xml文档,然后对其中一个文档进行微小的更改。我有一个xml模板,然后另一个xml文件每次都会更改。我只需要确定模板中的关键元素是否在另一个文件中。任何额外的内容都可以忽略,但缺少的关键元素应该添加 视觉表现: 模板 <root attribute="asd"> <a /> <b>

我尽量避免问这个问题。。。但我还没有找到任何能完全满足我需要的东西,现在是我完成这个项目的时候了

所以我需要的是:

我正在制作一个应用程序,它将基本上区分两个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,但它们似乎更适合于比较和告诉我它们的区别(包括在哪些地方添加了额外的行,我对此不感兴趣)


那么,有什么好主意可以实现两行代码并让它神奇地自行完成呢?因为那太好了:)

我想,您应该能够使用XSLT来完成这项工作。不是两行代码——根本没有代码,只是XSLT文件中合并启发式的合适定义


请参阅讨论并解决的类似问题。

我同意您的看法。我还添加了一个我亲自回答过的问题。@empo-谢谢。我明白了,已经有很多例子了。是的,有人点击了“那很简单”按钮,因为。。。显而易见的原因。