如何将一个XSD的XML转换为另一种非常相似但具有不同XSD文件的XML格式? XSD非常大并且有许多复杂类型,但实际的XML看起来非常相似。
我有两个XSD文件和两个XML文件 - 它们都成功验证了其中一个XSD文件。 我想将其中一个XML文件转换为另一个,以便我只能使用一个类进行进一步的操作。
如何在.NET 4.0和c#4.0中执行此操作?我必须使用XSLT吗?如果我必须使用XSLT,我该怎么做?我不确定我是否期待创建一个XSLT文档。
使用AutoMapper将一个XML类转换为另一个XML类是一种噩梦。当我查看XML时,它非常相似,所以我认为可能有一种更简单的方法......
答案 0 :(得分:2)
我肯定会使用XSLT。如果XML非常相似,那应该不会太困难。从身份变换开始,然后在需要更改某些内容时覆盖它。
以下示例仅将“foo”元素更改为“bar”元素。:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<!--Identity Template. This will copy everything as-is.-->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!--Change "foo" element to "bar" element.-->
<xsl:template match="foo">
<bar>
<xsl:apply-templates select="@*|node()"/>
</bar>
</xsl:template>
</xsl:stylesheet>
资源:
http://www.jenitennison.com/xslt/
http://www.mulberrytech.com/quickref/XSLT_1quickref-v2.pdf
http://www.mulberrytech.com/xsl/xsl-list/index.html#archive
此外,XSLT的很大一部分是XPath。如果您没有开发工具(我最喜欢的是oXygen),@ DimitreNovatchev有一个名为XPath Visualizer的好工具。
答案 1 :(得分:1)
我使用Altova MapForce生成XSLT文件。通过加载源和目标XSD / DTD文件然后映射匹配元素,该界面易于使用。然后使用.NET将源XML转换为使用XSLT文件的目标XML。