JSFiddle - React, Tailwind, and code Playground

by Adrian Prado

HTML

<textarea id="xmlData" style="width: 90vw; height: 90vh;"></textarea>

JavaScript

const jsonData = {
  "id": 794,
  "name": "Premium Quality",
  "permalink": "https://example.com/product/premium-quality-19/",
  "date_created": "2017-03-23T17:01:14",
  "description": "<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>",
  "price": "21,99",
  "sku": "80312-123123.90",
  "dimensions": {
    "length": "3,5",
    "width": "5,5",
    "height": "6,7"
  },
  "shipping_required": true,
  "categories": [
    {
      "id": 9,
      "name": "Clothing"
    },
    {
      "id": 14,
      "name": "T-shirts"
    }
  ],
  "tags": []
};

function jsonToXml(json){
	function noHTML(html){
  	const text = html.replace(/<[^>]*>/gm, '');
    return text;
  }
  
  function toNumber(data){
 		const cleanNumber = data.replace(/\,/gm, '.');
    const parsedNumber = Number.parseFloat(cleanNumber);
  	const number = parsedNumber.toLocaleString('en-US');
    return number;
  }
  
	let xml = `<?xml version="1.0" encoding="UTF-8" ?>\r`;
  xml += `<Retorno>\r`;
  
  xml += `\t<id>${json.id}</id>\r`;
  xml += `\t<name>${json.name}</name>\r`;
  xml += `\t<date_created>${json.date_created}</date_created>\r`;
  xml += `\t<description>${noHTML(json.description)}</description>\r`;
  xml += `\t<length>${toNumber(json.dimensions.length)}</length>\r`;
  xml += `\t<width>${toNumber(json.dimensions.width)}</width>\r`;
  xml += `\t<height>${toNumber(json.dimensions.height)}</height>\r`;
  
  xml += `\t<categories>\r`;
  json.categories.map((category) => {
    xml += `\t\t<category>\r`;
    xml += `\t\t\t<id>${category.id}</id>\r`;
    xml += `\t\t\t<name>${category.name}</name>\r`;
    xml += `\t\t</category>\r`;
  });
  xml += `\t</categories>\r`;
  
  xml += `\t<tags>\r`;
  json.tags.map((tag) => {
    xml += `\t\t<tag>${tag}</tag>\r`;
  });
  xml +=...