我想知道是否有人可以请求帮助,因为它非常紧急。我需要将xml文件的结构转换为另一个xml结构,以便我可以将它绑定到asp.net treeview控件(我是一个c#开发人员)。我注意到asp.net treeview控件接受转换文件或xpath表达式,我想知道是否有人知道一个可行的解决方案,请: 从
<Skeleton>
<Category>Carto</Category>
<SubCategoryName>ET-ET-RS23</SubCategoryName>
<Filename>V-01.XML</Filename>
<XmlDefinition>SKELETON</XmlDefinition>
</Skeleton>
<Skeleton>
<Category>Carto
<SubCategoryName>ET-ET-RS23
<Filename>V-01.XML
<XmlDefinition><SKELETON /></XmlDefinition>
</Filename>
</SubCategoryName>
</Category>
</Skeleton>
基本上我想要一个嵌套的树结构,所以我可以简单地绑定到我的treeview控件。所以Category包含SubCategoryName并且包含Filename并且包含xmldefinition
抱歉,我希望这是有道理的,谢谢答案 0 :(得分:2)
此样式表:
<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()[1]|
following-sibling::node()[1]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="XmlDefinition/text()">
<xsl:value-of select="concat('<',.,'/>')"/>
</xsl:template>
</xsl:stylesheet>
输出:
<Skeleton>
<Category>Carto
<SubCategoryName>ET-ET-RS23
<Filename>V-01.XML
<XmlDefinition><SKELETON/></XmlDefinition>
</Filename>
</SubCategoryName>
</Category>
</Skeleton>
答案 1 :(得分:1)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()[1]"/>
<xsl:apply-templates select="following-sibling::node()[1]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="XmlDefinition/text()">
<<xsl:value-of select="."/>/>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档:
<Skeleton>
<Category>Carto</Category>
<SubCategoryName>ET-ET-RS23</SubCategoryName>
<Filename>V-01.XML</Filename>
<XmlDefinition>SKELETON</XmlDefinition>
</Skeleton>
产生想要的结果:
<Skeleton>
<Category>Carto
<SubCategoryName>ET-ET-RS23
<Filename>V-01.XML
<XmlDefinition>
<SKELETON/>
</XmlDefinition>
</Filename>
</SubCategoryName>
</Category>
</Skeleton>