JSON is the modern standard for API and application datasets, but enterprise integrations, legacy SOAP endpoints, and XML-RPC backends still consume XML markup. Generating tag-based XML schemas from structured JSON collections is a common utility task. This guide outlines how to perform this client-side in the browser.
Why Convert JSON to XML?
Converting JSON to XML allows web projects to communicate with systems that expect tag structures. The core advantages include:
- Enterprise Integration: Many legacy systems, banks, and SOAP web services only accept XML request payloads.
- Schema Validation: XML supports rich verification constraints using XSD (XML Schema Definitions).
- Document Semantics: XML represents hierarchical documents with mixed text content and custom tags.
Serializing JSON to XML in JavaScript
Converting a JavaScript object list to XML involves iterating over each item, generating open and close tags, and escaping special XML entities like <, >, and & to maintain valid markup syntax.
Step-by-Step JS Implementation
Here is a complete helper function to convert JavaScript arrays or objects into formatted XML strings:
function jsonToXml(data, rootName = 'root', itemName = 'item') {
const safeTag = (name) => name.replace(/[^\w.-]/g, '_');
const escapeXml = (str) => String(str).replace(/[<>&'"]/g, (c) => {
switch (c) {
case '<': return '<';
case '>': return '>';
case '&': return '&';
case '\'': return ''';
case '"': return '"';
default: return c;
}
});
const valueToXml = (val, tagName, indent) => {
const sTag = safeTag(tagName);
if (val === null || val === undefined) {
return `${indent}<${sTag}></${sTag}>`;
}
if (typeof val === 'object') {
if (Array.isArray(val)) {
return val.map(item => valueToXml(item, tagName, indent)).join("\n");
} else {
const childXml = Object.keys(val)
.map(k => valueToXml(val[k], k, indent + " "))
.join("\n");
return `${indent}<${sTag}>\n${childXml}\n${indent}</${sTag}>`;
}
}
return `${indent}<${sTag}>${escapeXml(val)}</${sTag}>`;
};
const sRoot = safeTag(rootName);
const sItem = safeTag(itemName);
if (Array.isArray(data)) {
const rowsXml = data.map(row => valueToXml(row, sItem, " ")).join("\n");
return `<${sRoot}>\n${rowsXml}\n</${sRoot}>`;
}
return valueToXml(data, sRoot, "");
}
// Example usage
const data = [
{ id: 101, name: "Alice", active: true },
{ id: 102, name: "Bob", active: false }
];
console.log(jsonToXml(data, "employees", "employee"));
Convert JSON to XML Instantly using Sylvaera
To convert complex nested objects or large array tables without writing custom recursive algorithms, use Sylvaera's JSON to XML converter. It processes all conversions client-side in your browser, securing the privacy of your datasets.