Skip to content

Instantly share code, notes, and snippets.

@govind-s
Created November 12, 2017 16:58
Show Gist options
  • Save govind-s/ccf1534b922f69d56a2ca7de606a797d to your computer and use it in GitHub Desktop.
Save govind-s/ccf1534b922f69d56a2ca7de606a797d to your computer and use it in GitHub Desktop.
XML To JSON
<?xml version="1.0" encoding="UTF-8"?>
<account>
<account-id>one</account-id>
<account-name>IBN</account-name>
<departments>
<department>
<department-id>one</department-id>
<department-name>RnD</department-name>
<employees>
<employee>
<employee-id>1</employee-id>
<employee-name>Mark</employee-name>
</employee>
<employee>
<employee-id>2</employee-id>
<employee-name>Joy</employee-name>
</employee>
</employees>
</department>
<department>
<department-id>two</department-id>
<department-name>Dev</department-name>
<employees>
<employee>
<employee-id>3</employee-id>
<employee-name>Rick</employee-name>
</employee>
<employee>
<employee-id>4</employee-id>
<employee-name>Mike</employee-name>
</employee>
</employees>
</department>
</departments>
</account>
{
"account-id": "one",
"account-name": "IBN",
"departments": [{
"department-id": "one",
"department-name": "RnD",
"employees": [{
"employee-id": "1",
"employee-name": "Mark"
}, {
"employee-id": "2",
"employee-name": "Joy"
}
]
}, {
"department-id": "two",
"department-name": "Dev",
"employees": [{
"employee-id": "3",
"employee-name": "Rick"
}, {
"employee-id": "4",
"employee-name": "Mike"
}
]
}
]
}
{
"account-id": "one",
"account-name": "IBN",
"departments": {
"department": {
"department-id": "one",
"department-name": "RnD",
"employees": {
"employee": {
"employee-id": "1",
"employee-name": "Mark"
},
"employee": {
"employee-id": "2",
"employee-name": "Joy"
}
}
},
"department": {
"department-id": "two",
"department-name": "Dev",
"employees": {
"employee": {
"employee-id": "3",
"employee-name": "Rick"
},
"employee": {
"employee-id": "4",
"employee-name": "Mike"
}
}
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://xml.apache.org/xalan/java">
<xsl:output method="text" />
<xsl:template match="account">
<xsl:text>{
</xsl:text>
<xsl:for-each select="*">
<xsl:if test="position() > 1">
<xsl:text>,
</xsl:text>
</xsl:if>
<xsl:apply-templates select="."/>
</xsl:for-each>
<xsl:text>}
</xsl:text>
</xsl:template>
<xsl:template match="*[*]" priority="-1">
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/> <!-- Nested object field keys-->
<xsl:text>"</xsl:text>
<xsl:text>: {
</xsl:text>
<xsl:for-each select="*">
<xsl:if test="position() > 1">
<xsl:text>,
</xsl:text>
</xsl:if>
<xsl:apply-templates select="."/>
</xsl:for-each>
<xsl:text>
</xsl:text>
<xsl:text>}</xsl:text>
</xsl:template>
<xsl:template match="*[not(*)]">
<xsl:text> "</xsl:text>
<xsl:value-of select="name()"/><!-- Leaf object field keys-->
<xsl:text>"</xsl:text>
<xsl:text>: </xsl:text>
<xsl:call-template name="quote">
<xsl:with-param name="str" select="normalize-space(.)" />
</xsl:call-template>
</xsl:template>
<xsl:template name="quote">
<xsl:param name="str" select="." />
<xsl:text>"</xsl:text>
<xsl:value-of select="."/>
<xsl:text>"</xsl:text>
</xsl:template>
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment