我有以下xml文件:
<table name="countries">
<column name="id">1</column>
<column name="name">Abkhazia</column>
<column name="code">XZ</column>
<column name="phone_code">+995</column>
<column name="flag">xz.gif</column>
</table>
我如何将这个xml格式化为这样的东西?
<countries>
<id>1</id>
<name>Abkhazia</name>
<code>XZ</code>
<phone_code>+995</phone_code>
<flag>xz.gif</flag>
</countries>
是否有一些在线资源?
答案 0 :(得分:3)
这只是在任何编程语言中使用xml的基本工作。我已经在XSLT中完成了它,没有编程,转换产生了所需的输出(在这里测试:XSLT Transformation - Online Toolz),mabye有更优雅的方式,我不是XSLT的专家
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="no"/>
<xsl:template match="table">
<xsl:variable name="tableName" select="@name"></xsl:variable>
<xsl:element name="{$tableName}">
<xsl:for-each select="column">
<xsl:variable name="columnName" select="@name"></xsl:variable>
<xsl:element name="{$columnName}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:2)
这个简短而简单的转型:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:element name="{@name}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时:
<table name="countries">
<column name="id">1</column>
<column name="name">Abkhazia</column>
<column name="code">XZ</column>
<column name="phone_code">+995</column>
<column name="flag">xz.gif</column>
</table>
会产生想要的正确结果:
<countries>
<id>1</id>
<name>Abkhazia</name>
<code>XZ</code>
<phone_code>+995</phone_code>
<flag>xz.gif</flag>
</countries>