java


convert JSON to XML using XSLT 3 in java


When i was trying to transform JSON with XSLT to XML I am not able to transform, it is throwing the prolog exception, when i put the Json in tags i am able to transform. Can any one give an example how to transform from Json to XML with XSLT3.0.
Here's one example using json-to-xml(). It processes all json files in a specified directory (collection param).
I've also used json-doc() with uri-collection() and map:get() to process very simple json files.
JSON (File "so.json" based on the JSON in the question How to convert json to xml using xslt)
{"Order": {
"InvestmentAccount": {"AccountNumber": "10"},
"Parcel": {
"Limit": "0",
"ExpiryDate": "1900-01-01T00:00:00",
"Asset": [
{
"Open": "25.15",
"High": "25.15",
"Low": "25.11",
"Close": "25.87"
},
{
"Open": "25.15",
"High": "25.15",
"Low": "25.11",
"Close": "25.87"
}
]
},
"OrderDate": "2012-10-11T21:46:03.6489906+11:00"
}}
XSLT 3.0 (Tested using Saxon-HE 9.7.0.8J from the command line specifying init as the initial template.)
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:map="http://www.w3.org/2005/xpath-functions/map"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs map">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="collection" select="'file:///C:/some/dir'"/>
<xsl:template match="#*|node()">
<xsl:copy>
<xsl:apply-templates select="#*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template name="init">
<xsl:for-each select="uri-collection(concat($collection,'?select=*.json'))">
<xsl:variable name="uri" select="."/>
<xsl:variable name="filename" select="tokenize($uri,'/')[last()]"/>
<xsl:message>Processing json file: <xsl:value-of select="$filename"/>...</xsl:message>
<xsl:variable name="json" select="unparsed-text($uri)"/>
<xsl:result-document href="{substring-before($filename,'.')}.xml">
<xsl:apply-templates select="json-to-xml($json)"/>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
XML Output ("so.xml")
<map xmlns="http://www.w3.org/2005/xpath-functions">
<map key="Order">
<map key="InvestmentAccount">
<string key="AccountNumber">10</string>
</map>
<map key="Parcel">
<string key="Limit">0</string>
<string key="ExpiryDate">1900-01-01T00:00:00</string>
<array key="Asset">
<map>
<string key="Open">25.15</string>
<string key="High">25.15</string>
<string key="Low">25.11</string>
<string key="Close">25.87</string>
</map>
<map>
<string key="Open">25.15</string>
<string key="High">25.15</string>
<string key="Low">25.11</string>
<string key="Close">25.87</string>
</map>
</array>
</map>
<string key="OrderDate">2012-10-11T21:46:03.6489906+11:00</string>
</map>
</map>
Since I'm doing an xsl:apply-templates along with the identity transform, the XML from json-to-xml() is output unchanged. I can easily add templates to transform that XML into something else. (Be sure to pay attention to the http://www.w3.org/2005/xpath-functions default namespace.)

Related Links

TimerService EJB initialize multiple times
PrintScreen image capturing
Java recursive root function
Android - SeekBar NullPointException - I don't know why.
Java Regex Exclude a Pattern ?! Usage
How do I include a GWT module from a sibling project?
Airpush classes could not be instantiated
Consequences of not using an EntityManager with Hibernate
LWJGL Function is not supported?
Are special characters in Http header “names” valid?
Crop from binary image (boolean array) in Java
Loop through a 2d array backwards
Cannot build graph with Dagger 2
Increase step size on JSpinner when a certain key is pressed
Why this raises compilation error when trying to increment the value and put it back to HashMap?
Why doesn't this code throw a ConcurrentModificationException?

Categories

HOME
omnet++
reflection
office365api
relay
tizen-web-app
autotools
dacpac
vifm
user-input
google-cloud-spanner
serverless-framework
worldwind
jsdoc
lucene.net
custom-wordpress-pages
reverse-proxy
css-animations
wijmo
dxf
firebase-crash-reporting
cas
virtualdub
nhapi
wtx
dbclient
compatibility
windowbuilder
fabric8
google-qpx-express-api
winrt-xaml-toolkit
windows-dev-center
force-layout
mpmediaquery
appfabric
dartium
space-complexity
event-driven
temporary-files
user-controls
unoconv
ensembles
reportingservices-2005
ibpy
qcombobox
angular-resource
jsch
xml-documentation
revapi
python-webbrowser
forever
lift-json
ifs
bind9
crosswalk-runtime
mediaelement
angular-cache
ado.net-entity-data-model
file-writing
player
contact-list
sigabrt
packagist
yaws
cloudbees
netmq
energy
vhd
icu4j
cannon.js
jmeter-maven-plugin
wyam
emailrelay
splash
createprocessasuser
directoryservices
formatjs
camanjs
socketexception
openexr
mesa
dml
braille
pyhdf
oam
xsockets.net
tws
random-seed
mqx
clipper
pvrtc
regsvr32
work-stealing
custom-backend
datareader
blitz++
asp.net-mvc-areas
gamequery
sproutcore-2
asp.net-profiles
webkit.net
sef
ti-dsp
data-driven
.net-1.0

Resources

Encrypt Message



code
soft
python
ios
c
html
jquery
cloud
mobile