1<?xml version="1.0" encoding="UTF-8"?>2<root>3<service>appkiro-api</service>4<version>1.4.2</version>5<release>6<stage>production</stage>7<date>2024-03-18</date>8<approved>true</approved>9</release>10<regions>us-east-1</regions>11<regions>ap-southeast-1</regions>12<regions>eu-west-1</regions>13<limits>14<requestsPerMinute>600</requestsPerMinute>15<burst/>16</limits>17<owners>18<name>Alice Johnson</name>19<email>[email protected]</email>20</owners>21<owners>22<name>Bob Smith</name>23<email>[email protected]</email>24</owners>25</root>26
JSON to XML converts API responses, exported JSON, and pasted records into well-formed XML in your browser. Root element name, indent, null strategy, CDATA wrapping, and the XML declaration are all configurable so the output matches the conventions of SOAP services, RSS readers, OPML editors, or internal XML schemas.
Most modern APIs speak JSON, but plenty of legacy systems — payment gateways, ERP integrations, shipping providers, RSS feeds, government schemas — still require XML. Hand-translating invites escaping bugs, malformed names, and missing declarations. This tool emits valid XML on the first try, with sane defaults and predictable structure.
.json file..xml file.Input JSON card hosts three input tabs: Paste content for direct text, Extract from URL for public JSON endpoints (server-proxied to bypass CORS), and Upload JSON for local .json/.txt files up to 5 MB.
Output XML card renders the result in a compact line-numbered viewer with Copy and Download actions. Output updates live as you change format options.
XML Format panel controls root and item names, indent, pretty print, declaration, null strategy, CDATA wrapping, and self-closing empty elements.
order, response) when the consumer expects it; default root works for generic transport.user) for natural-reading XML.xsi:nil when the schema explicitly distinguishes nil from missing.<![CDATA[ ]]>.<x/>; off emits <x></x> for parsers that prefer it.rss or feed and the item element to item or entry.Pasted JSON and uploaded files are converted entirely in your browser. The Extract from URL tab is the only path that touches the server, and only to proxy the URL you supply so CORS does not block direct fetches. Nothing is stored.
Each item of an array is emitted as a sibling element under the parent key. So { users: [a, b] } becomes <users>...</users><users>...</users>. When the JSON root itself is an array, items are wrapped in the configurable root and item element names.
Element text is XML-escaped (&, <, >, \", '). With CDATA strategy set to Auto, strings containing < or > are wrapped in <![CDATA[...]]> instead of being escaped.
Empty mode emits <key/>. xsi:nil mode emits <key xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> on the first occurrence and inherits the namespace afterwards.
Yes. XML element names must start with a letter or underscore and only contain letters, digits, hyphens, underscores, and dots. Invalid characters are replaced with _ and a leading underscore is added when needed.
Turn on Add XML declaration when the consumer requires <?xml version="1.0" encoding="UTF-8"?> at the top — typically SOAP services, RSS readers, or strict XML parsers.