Java 使用xslt将一个xml的内容复制到另一个xml

Java 使用xslt将一个xml的内容复制到另一个xml,java,xml,xslt,Java,Xml,Xslt,我正在尝试使用Xslt将内容从一个xml复制到另一个xml 我需要复制文件1的内容 <?xml version="1.0"?> <products author="Jesper"> <product> <name>Delta</name> <price>800</price> <stock> <price>13a</price>

我正在尝试使用Xslt将内容从一个xml复制到另一个xml

我需要复制文件1的内容

<?xml version="1.0"?>
<products author="Jesper">
  <product>
    <name>Delta</name>
    <price>800</price>
    <stock>
        <price>13a</price>
    </stock>
    <place>Denmark</place>
  </product>
</products>

三角洲
800
13a
丹麦
到文件2。File2具有类似的标记,但顺序混乱

<?xml version="1.0"?>
<products author="Jesper">
  <product>
    <stock>
        <price>13d</price>
    </stock>
    <price>700</price>
    <place>Copenhagen</place>
     <name>Beta</name>
  </product>
</products>

13d
700
哥本哈根
贝塔
预期产出

<products author="Jesper">
  <product>
    <stock>
        <price>13a</price>
    </stock>
    <price>800</price>
    <place>Denmark</place>
     <name>Delta</name>
  </product>
</products>

13a
800
丹麦
三角洲

所以基本上我需要使用for each遍历file1,然后在file2中找到匹配的标记并复制标记值。不确定是否有一种有效的方法来做到这一点。。。双重迭代效率很低。任何建议都会有帮助。

这是一个非常广泛的问题,但我会尝试给你一些建议,让你开始学习。您可能希望使用
doc()
函数来加载文件,因为XSLT只允许您迭代单个“主”文件
doc()
将新文件加载到可以应用模板的变量中,以此类推。如果您关心迭代的性能,您应该了解
xsl:key
key()
函数,它们构建的索引将对此有所帮助。

那么您希望覆盖文件2中的所有内容吗?或者某种合并。如果是第一种情况,为什么要提到文件2呢。获取文件1并使用xslt从scratchfile2创建一个指定的模式,该模式可能没有多少额外的标记,也可能没有文件1的所有标记。我无法更改文件2的预定义架构。因此,对于文件1的每个标记,我需要在文件2中查找标记。如果找到,我需要设置文件1中标记的值,这就足够清楚了!但你想怎么做。仅使用xslt。我不确定,但我认为xslt不能用于将数据附加到现有文件中。在您的标题中,您编写了java,我认为这是一个java问题,而不是xslt问题。也许我错了。