【问题标题】:Copying content of one xml into other using xslt使用 xslt 将一个 xml 的内容复制到另一个
【发布时间】:2013-01-29 06:19:01
【问题描述】:

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

我需要复制file1的内容

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

到文件2。文件2有类似的标签,但顺序混乱,

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

预期输出

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

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

【问题讨论】:

  • 所以你想覆盖 file2 中的所有内容?或某种合并。如果是第一种情况,为什么要提及文件 2。获取文件 1 并使用 xslt 从头开始​​创建
  • file2 有一个指定的模式,它可能有几个额外的标签,可能没有文件 1 的所有标签。我无法更改文件 2 的预定义模式。所以对于 file1 的每个标签,我需要对文件 2 中的标签执行查找。如果找到我需要从 file1 设置标签的值
  • 这已经足够清楚了!但是你想怎么做。只需使用 xslt。我不确定,但我认为 xslt 不能用于将数据附加到现有文件。在您的标题中,您编写了 java,我认为这是 java 问题而不是 xslt 问题。也许我错了。

标签: java xml xslt


【解决方案1】:

这是一个非常广泛的问题,但我会尝试为您提供一些可以帮助您入门的建议。您可能希望使用doc() 函数来加载文件,因为XSLT 只允许您遍历单个“主”文件。 doc() 将新文件加载到您可以应用模板的变量中,依此类推。如果您担心迭代性能,您应该了解 xsl:keykey() 函数,它们会构建有助于解决此问题的索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    相关资源
    最近更新 更多