如何从键值配对xml生成具有名称值对的xml?

时间:2016-12-28 16:15:24

标签: java xml xslt

我有一个从JSON到XML Conversion的下面表格生成的XML。

<entry>
  <string>dataset_code</string>
  <string>GDP</string>
</entry>

如何在XML中将其转换为以下格式?

<entry>
  <dataset_code>GDP</dataset_code>
</entry>

注意:这里的键值对(dataset_code,GDP,条目)是动态的。

对此的任何帮助都将受到高度赞赏!

2 个答案:

答案 0 :(得分:0)

我不是专家,但在玩http://www.freeformatter.com/xsl-transformer.html我找到了这个解决方案:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
  <entry>
    <xsl:text disable-output-escaping="yes">&lt;</xsl:text><xsl:value-of select="(entry/string)[1]"/><xsl:text disable-output-escaping="yes">&gt;</xsl:text>
    <xsl:value-of select="(entry/string)[2]"/>
    <xsl:text disable-output-escaping="yes">&lt;</xsl:text>/<xsl:value-of select="(entry/string)[1]"/><xsl:text disable-output-escaping="yes">&gt;</xsl:text>
  </entry>
</xsl:template>
</xsl:stylesheet>

希望有所帮助

答案 1 :(得分:0)

在XSLT中,这将完成:

<xsl:template match="/*">
    <xsl:copy>
        <xsl:element name="{string[1]}">
            <xsl:value-of select="string[2]" />
        </xsl:element>
    </xsl:copy>
</xsl:template>

请注意,如果第一个字符串不是有效的XML元素名称,则很容易失败。