Utility Coder
Back to Blog
converter

XML To JSON

Andy Pham
xml to json, xml to json, xml to json online

Ready to try XML To JSON?

Access the free online tool now - no registration required

Open Tool

XML To JSON - Complete Guide

XML to JSON conversion transforms XML documents into JSON format for use in modern web applications and APIs. This enables legacy XML data and SOAP services to integrate with JSON-based systems, JavaScript applications, and REST APIs.

How It Works

The converter parses XML elements, attributes, and text content into a JSON structure. Elements become object keys, attributes typically get an @ prefix, text content becomes values. Array detection handles repeated elements. The mapping conventions vary by implementation.

Technical Details

XML-to-JSON mapping challenges: attributes vs elements (use @attr convention), mixed content (text + elements), repeated elements (detect as arrays), namespaces (preserve or strip), CDATA sections, and empty elements. No universal standard exists - conventions like BadgerFish, Parker, or custom mappings are used.

Common Use Cases

  1. Legacy System Integration: Convert SOAP/XML responses for modern JSON-based apps.
    • Example: Transform SOAP response to JSON for React frontend
  2. Data Migration: Convert XML data exports to JSON for new systems.
  3. API Transformation: Build JSON APIs that wrap XML backends.
  4. Configuration Conversion: Migrate XML configs to JSON format.

Code Examples

Node.js with xml2js

const xml2js = require('xml2js');

const xml = `
<user id="123">
  <name>John Doe</name>
  <email>john@example.com</email>
</user>
`;

xml2js.parseString(xml, {
  explicitArray: false,
  mergeAttrs: true
}, (err, result) => {
  console.log(JSON.stringify(result, null, 2));
});
// {"user":{"id":"123","name":"John Doe","email":"john@example.com"}}

xml2js is popular for Node.js. explicitArray:false prevents single elements becoming arrays.

Python with xmltodict

import xmltodict
import json

xml = """
<user id="123">
  <name>John Doe</name>
  <email>john@example.com</email>
</user>
"""

data = xmltodict.parse(xml)
json_str = json.dumps(data, indent=2)
# Attributes get @ prefix: {"user": {"@id": "123", "name": "John Doe"}}

xmltodict uses @ prefix for attributes by default. It's simple and handles most common cases.

Tips & Best Practices

  • Choose a consistent convention for attributes (@attr or _attr)
  • Decide upfront how to handle arrays (always or auto-detect)
  • Strip namespaces if not needed to simplify output
  • Test with representative XML samples before production use
  • Consider schema validation after conversion

Common Mistakes to Avoid

  • Not handling repeated elements as arrays
  • Losing attribute data during conversion
  • Ignoring XML namespaces that affect element names
  • Assuming consistent structure in variable XML

When to Use This Tool

Use XML to JSON when integrating legacy XML systems with modern apps, converting SOAP responses for REST clients, or migrating XML data to JSON-based storage.

Frequently Asked Questions

How are XML attributes converted?

Common conventions: @attributeName as a property, _attributes object containing all attributes, or attributes merged with elements. Choose based on your data needs and avoid naming conflicts.

What happens to repeated XML elements?

Repeated elements should become JSON arrays. Smart converters detect this automatically. Some always use arrays for consistency (even single elements), others only when duplicates exist.

How are XML namespaces handled?

Options: strip namespaces entirely, preserve as prefixes (ns:element), or use namespace URIs as object wrappers. For most web use cases, stripping namespaces is simplest.

What about XML with mixed content?

Elements with both text and child elements are tricky. Common approach: use #text or _text for text content, sibling to child element properties. This preserves all content but may be verbose.

Get Started

Ready to try XML To JSON? Use the tool now - it's free, fast, and works right in your browser.


Last updated: June 27, 2026

Start using XML To JSON

Free, fast, and privacy-focused - try it now

Launch Tool