XML 转换自动化

XML transformation automation

我有一个桌面应用程序,它将 XML 文件作为输入。当应用程序引入新功能时,我必须创建新的 XML 文件。

新 XML 的格式与现有格式相似度为 80%。因此,此 XML 的自动化将使我用于新增强功能的时间减少 80%。

我已经想过XSD,但不知道这样对不对

或者 XML 转换自动化还有什么可能吗?

XSLT 是自动转换 XML 的理想选择,前提是您准备学习一种声明式编程语言。

当新的XML与现有的XML有80%的相似度时,开始恒等变换,

<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

将以相同方式复制 XML。

然后添加模板以涵盖新的 XML 与旧的有何不同。例如,将此模板添加到身份转换中,

<xsl:template match="not-needed"/>

将阻止 not-needed 元素被转换为新的 XML。

还有这个模板,

<xsl:template match="old-element">
  <new-element/>
</xsl:template>

将用 new-element 替换 old-element(及其下面的所有内容)。

或者,这个模板,

  <xsl:template match="old-element">
    <new-element>
      <xsl:apply-templates select="@*|node()"/>
    </new-element>
  </xsl:template>

将用 new-element.

替换 old-element(但 不是 下面的所有内容)

以这种方式在几分钟内创建基于身份的转换是很常见的。幸运的是,这种能力可以扩展到更复杂的转换,并具有同样高的结果与努力比率。

另请参阅:How to get started with XSLT?