Big News: Socket Selected for OpenAI's Cybersecurity Grant Program.Details
Socket
Book a DemoSign in
Socket

simple-xml-to-json

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

simple-xml-to-json

Convert XML to JSON - Fast & Simple

Source
npmnpm
Version
1.2.4
Version published
Weekly downloads
2M
-14.1%
Maintainers
1
Weekly downloads
 
Created
Source

A simple XML to JSON converter

npm version Test CI codecov

Install

Simply install using NPM in your project directory

npm install simple-xml-to-json

Usage and API

1. convertXML(xmlToConvert [,customConverter])

  • xmlToConvert <string>
  • customConverter <function>
  • Returns: <JSON> by default or other if customConverter is used

2. createAST(xmlToConvert)

  • xmlToConvert <string>
  • Returns: An AST representation of the XML <JSON>

Code Example:

const {convertXML, createAST} = require("simple-xml-to-json")

const myJson = convertXML(myXMLString)
const myYaml = convertXML(myXMLString, yamlConverter)
const myAst = createAST(myXMLString)

TS Typescript compatible

Notes and how to use code

  • The easiest thing to start is to run node example/example.js in your terminal and see what happens.
  • There's the xmlToJson.js file for convenience. Just pass in the XML as a String.
  • It's MIT licensed so you can do whatever :)
  • Profit

How this works in a nutshell

  • The library converts the XML to an AST
  • There is a JSON converter that takes the AST and spits out a JSON
  • You can write your own converters if you need XML-to-ANY-OTHER-FORMAT

Benchmark

Take these results with a grain of salt.
According to a simple benchmark test I performed in April 2024 with a random XML. YMMV. Benchmark Chart

Current Drawbacks

  • All values are translated to strings in JSON
  • There are currently reserved words in the JSON converter:
    • "content" - up to version 1.2.3
    • "children"

Default Mapping & Collisions

By default, an element's text content is mapped to a "content" property, while its attributes are mapped directly to JSON properties of the same name.

The Risk

If an XML element possesses an attribute actually named content while also containing text content, a name collision occurs. This typically results in a parsing error or data loss due to duplicate keys.

Example Collision:

<MyElement content="attr-value">text-content</MyElement>

Version 1.2.3+ Fix

To prevent these collisions, versions newer than 1.2.3 will specifically prefix the "content" attribute name with an @ symbol. So the attribute "content" now becomes the "@content" JSON property.

[!NOTE] If you need to, you can write your own converter from the AST created by the parser, and pass it as a 2nd parameter after the xml string

Keywords

XML

FAQs

Package last updated on 17 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts