[javascript] Convert XML to JSON (and back) using Javascript

I've created a recursive function based on regex, in case you don't want to install library and understand the logic behind what's happening:

_x000D_
_x000D_
const xmlSample = '<tag>tag content</tag><tag2>another content</tag2><tag3><insideTag>inside content</insideTag><emptyTag /></tag3>';_x000D_
console.log(parseXmlToJson(xmlSample));_x000D_
_x000D_
function parseXmlToJson(xml) {_x000D_
    const json = {};_x000D_
    for (const res of xml.matchAll(/(?:<(\w*)(?:\s[^>]*)*>)((?:(?!<\1).)*)(?:<\/\1>)|<(\w*)(?:\s*)*\/>/gm)) {_x000D_
        const key = res[1] || res[3];_x000D_
        const value = res[2] && parseXmlToJson(res[2]);_x000D_
        json[key] = ((value && Object.keys(value).length) ? value : res[2]) || null;_x000D_
_x000D_
    }_x000D_
    return json;_x000D_
}
_x000D_
_x000D_
_x000D_

Regex explanation for each loop:

  • res[0] - return the xml (as is)
  • res[1] - return the xml tag name
  • res[2] - return the xml content
  • res[3] - return the xml tag name in case the tag closes itself. In example: <tag />

You can check how the regex works here: https://regex101.com/r/ZJpCAL/1

Note: In case json has a key with an undefined value, it is being removed. That's why I've inserted null at the end of line 9.

Examples related to javascript

need to add a class to an element How to make a variable accessible outside a function? Hide Signs that Meteor.js was Used How to create a showdown.js markdown extension Please help me convert this script to a simple image slider Highlight Anchor Links when user manually scrolls? Summing radio input values How to execute an action before close metro app WinJS javascript, for loop defines a dynamic variable name Getting all files in directory with ajax

Examples related to jquery

How to make a variable accessible outside a function? Jquery assiging class to th in a table Please help me convert this script to a simple image slider Highlight Anchor Links when user manually scrolls? Getting all files in directory with ajax Bootstrap 4 multiselect dropdown Cross-Origin Read Blocking (CORB) bootstrap 4 file input doesn't show the file name Jquery AJAX: No 'Access-Control-Allow-Origin' header is present on the requested resource how to remove json object key and value.?

Examples related to xml

strange error in my Animation Drawable How do I POST XML data to a webservice with Postman? PHP XML Extension: Not installed How to add a Hint in spinner in XML Generating Request/Response XML from a WSDL Manifest Merger failed with multiple errors in Android Studio How to set menu to Toolbar in Android How to add colored border on cardview? Android: ScrollView vs NestedScrollView WARNING: Exception encountered during context initialization - cancelling refresh attempt

Examples related to json

Use NSInteger as array index Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) HTTP POST with Json on Body - Flutter/Dart Importing json file in TypeScript json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 190) Angular 5 Service to read local .json file How to import JSON File into a TypeScript file? Use Async/Await with Axios in React.js Uncaught SyntaxError: Unexpected token u in JSON at position 0 how to remove json object key and value.?

Examples related to format-conversion

Convert XML to JSON (and back) using Javascript