将 JSON 转换为旧的 XML 格式
Convert JSON to and old XML format
我要转换:
{
Employer: {
Name: 'Sample',
Age: 23
}
}
收件人:
<EMPLOYER NAME="Sample" AGE="23"></EMPLOYER>
这可能吗?或者,如果您能推荐一个 npm 包,我将不胜感激。
找到 XML 个节点 <element><\element>
您可以使用此正则表达式来匹配 XML 个节点
const regex = /['"]?(\w+)['"]?[ ]?:[ ]?{(.[^}]+)}/gms;
Regexp101 调试 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;
}
查找XML节点参数age=20
您可以像这样用正则表达式匹配节点参数:
const regex = /\s+(\w+) ?: ?['"]?(.[^'^"\n]+)['"]?/gms;
Regexp101 调试 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))
我要转换:
{
Employer: {
Name: 'Sample',
Age: 23
}
}
收件人:
<EMPLOYER NAME="Sample" AGE="23"></EMPLOYER>
这可能吗?或者,如果您能推荐一个 npm 包,我将不胜感激。
找到 XML 个节点 <element><\element>
您可以使用此正则表达式来匹配 XML 个节点
const regex = /['"]?(\w+)['"]?[ ]?:[ ]?{(.[^}]+)}/gms;
Regexp101 调试 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;
}
查找XML节点参数age=20
您可以像这样用正则表达式匹配节点参数:
const regex = /\s+(\w+) ?: ?['"]?(.[^'^"\n]+)['"]?/gms;
Regexp101 调试 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))