I want to convert:
{
Employer: {
Name: 'Sample',
Age: 23
}
}
To:
<EMPLOYER NAME="Sample" AGE="23"></EMPLOYER>
Is this possible? Or if you can suggest an npm package I would greatly appreciate it.
I want to convert:
{
Employer: {
Name: 'Sample',
Age: 23
}
}
To:
<EMPLOYER NAME="Sample" AGE="23"></EMPLOYER>
Is this possible? Or if you can suggest an npm package I would greatly appreciate it.
<element><\element>
You can use this regular expression to match the XML nodes
const regex = /['"]?(\w+)['"]?[ ]?:[ ]?{(.[^}]+)}/gms;
Regexp101 Debug link: https://regex101.com/r/71cphG/3
const findNodes = (source) => {
const regexNodes = /['"]?(\w+)['"]?[ ]?:[ ]?{(.[^}]+)}/gms;
let nodes = [];
while (m = regexNodes.exec(str)) {
let nodeName = m[1]
let nodeBody = m[2]
nodes.push({ name: nodeName, body: nodeBody });
}
return nodes;
}
age=20
You can match node params with a regular expression like this:
const regex = /\s+(\w+) ?: ?['"]?(.[^'^"\n]+)['"]?/gms;
Regexp101 Debug link: https://regex101.com/r/upMtcz/1
const generateNode = (nodeName, jsonBody) => {
const regexParams = /\s+(\w+) ?: ?['"]?(.[^'^"\n]+)['"]?/gms;
let result = `<${nodeName}`;
while (matches = regexParams.exec(jsonBody)) {
let param = `${matches[1]}=${matches[2]}`;
result += ` ${param}`;
}
result += `></${nodeName}>`
return result;
}
const findNodes = (source) => {
const regexNodes = /['"]?(\w+)['"]?[ ]?:[ ]?{(.[^}]+)}/gms;
let nodes = [];
while (m = regexNodes.exec(str)) {
let nodeName = m[1]
let nodeBody = m[2]
nodes.push({ name: nodeName, body: nodeBody });
}
return nodes;
}
const generateNode = (nodeName, jsonBody) => {
const regexParams = /\s+(\w+) ?: ?['"]?(.[^'^"\n]+)['"]?/gms;
let result = `<${nodeName}`;
while (matches = regexParams.exec(jsonBody)) {
let param = `${matches[1]}=${matches[2]}`;
result += ` ${param}`;
}
result += `></${nodeName}>`
return result;
}
const str = `{
"Employer" : {
Name: 'Sample',
Age: 23
},
Employer: {
Name: 'Sample',
Age: 23
},
Employer: {
Name: 'Sample',
Age: 23
}
}`;
findNodes(str)
.map(({ name, body }) => generateNode(name, body))
.forEach(element => console.log(element))