411 REFERENCE · Wikibooks
XQuery/Convert XML to JSON
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
You can use the JSON output method to convert XML to JSON format. (For an important note on this article, see https://stackoverflow.com/questions/48876292/how-to-use-the-xslt-xquery-serialization-namespace-to-export-to-json/.)
xquery version "3.0";
declare namespace output="http://www.w3.org/2010/xslt-xquery-serialization";
declare option output:method "json";
declare option output:media-type "application/json";
let $test :=
<root>
<!-- simple elements -->
<aaa>AAA</aaa>
<bbb>BBB</bbb>
<ccc>CCC</ccc>
<!-- complex (nested) element -->
<ddd>
<eee>
<fff>
<ggg>GGG</ggg>
</fff>
</eee>
</ddd>
<!-- duplicate elements -->
<hhh>HHH1</hhh>
<hhh>HHH2</hhh>
<hhh>HHH3</hhh>
<hhh>HHH4</hhh>
<!-- attributes -->
<iii a1="123" a2="456" a3="789"/>
<!-- attributes with text content-->
<jjj a1="123" a2="456" a3="789">JJJ</jjj>
</root>
return $test
Sample Output
{
"aaa": "AAA",
"bbb": "BBB",
"ccc": "CCC",
"ddd": {"eee": {"fff": {"ggg": "GGG"}}},
"hhh": [
"HHH1",
"HHH2",
"HHH3",
"HHH4"
],
"iii": {
"a1": "123",
"a2": "456",
"a3": "789"
},
"jjj": {
"a1": "123",
"a2": "456",
"a3": "789",
"#text": "JJJ"
}
}