XQuery/Convert XML to JSON
Appearance
< XQuery
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
[edit | edit source]{
"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"
}
}