我有一个桌面应用程序,它将XML文件作为输入。当新功能被引入应用程序时,我必须创建新的XML文件。
新XML的格式与现有格式的80%相似。因此,对于新增强功能,此XML的自动化将使我的时间减少80%。
我已经考虑过XSD,但我不知道这是否正确。
或者,XML转换自动化是否还有其他可能性?
答案 0 :(得分:1)
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与旧XML的不同之处。例如,将此模板添加到标识转换
<xsl:template match="not-needed"/>
将阻止not-needed
个元素转换为新的XML。
这个模板,
<xsl:template match="old-element">
<new-element/>
</xsl:template>
会将old-element
(及其下方的所有内容)替换为new-element
。
或者,这个模板,
<xsl:template match="old-element">
<new-element>
<xsl:apply-templates select="@*|node()"/>
</new-element>
</xsl:template>
将old-element
替换new-element
(但不其下的所有内容)。
能够在几分钟内以这种方式创建基于身份的转换是很常见的。幸运的是,这种功能扩展到更复杂的转换,同样具有相似的高结果 - 功率比。