I need to transform one document formated in xml into JSON and vice versa.
I belive this is a common requirement and perhaps there's still one library that does that work开发者_如何学Go.
Know any?
Not a C#, but a pure XSLT 2.0 implementation that converts a JSON object into an XML document:
Have a look at the f:json-document()
from the FXSL 2.x library.
Using this function it is extremely easy to incorporate JSon and use it just as... XML.
For example, one can just write the following XPath expression:
f:json-document($vstrParam)/Students/*[sex = 'Female']
and get all children of Students
with sex = 'Female'
Here is the complete example:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="f xs"
>
<xsl:import href="../f/func-json-document.xsl"/>
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="vstrParam" as="xs:string">
{
"teacher":{
"name":
"Mr Borat",
"age":
"35",
"Nationality":
"Kazakhstan"
},
"Class":{
"Semester":
"Summer",
"Room":
null,
"Subject":
"Politics",
"Notes":
"We're happy, you happy?"
},
"Students":
{
"Smith":
{"First Name":"Mary","sex":"Female"},
"Brown":
{"First Name":"John","sex":"Male"},
"Jackson":
{"First Name":"Jackie","sex":"Female"}
}
,
"Grades":
{
"Test":
[
{"grade":"A","points":68,"grade":"B","points":25,"grade":"C","points":15},
{"grade":"C","points":2, "grade":"B","points":29, "grade":"A","points":55},
{"grade":"C","points":2, "grade":"A","points":72, "grade":"A","points":65}
]
}
}
</xsl:variable>
<xsl:template match="/">
<xsl:sequence select=
"f:json-document($vstrParam)/Students/*[sex = 'Female']"/>
</xsl:template>
</xsl:stylesheet>
When the above transformation is applied on any XML document (ignored), the correct result is produced:
<Smith>
<First_Name>Mary</First_Name>
<sex>Female</sex>
</Smith>
<Jackson>
<First_Name>Jackie</First_Name>
<sex>Female</sex>
</Jackson>
Check out Json.NET. It's a great library that is easy to get into.
I'm not sure about from json to xml, but we use this xml to json xsl template to great effect in out CMS which is XML based, rather handy to reuse existing XML structures for ajax applications.
http://code.google.com/p/xml2json-xslt/
精彩评论