JSON转XML
// 定义一个函数,将JSON数据转换为XML字符串
function jsonToXml(json) {
var xml = '';
if (typeof json !== 'object') {
xml = json === undefined ? '' : String(json);
} else if (Array.isArray(json)) {
for (var i = 0; i < json.length; i++) {
xml += jsonToXml(json[i]);
}
} else {
for (var key in json) {
var value = json[key];
var child = jsonToXml(value);
if (typeof value === 'object') {
xml += '<' + key + '>' + child + '</' + key + '>';
} else {
xml += '<' + key + '>' + escapeXml(child) + '</' + key + '>';
}
}
}
return xml;
}
// 转义XML字符串中的特定字符
function escapeXml(text) {
return text.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
XML保存文件到本地
// 转换JSON为XML
var xmlData = '<?xml version="1.0" encoding="UTF-8"?>' +
'<root>' + jsonToXml(jsonData) + '</root>';
// 创建Blob对象
var blob = new Blob([xmlData], { type: 'application/xml' });
// 创建下载链接
var downloadLink = document.createElement("a");
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = "n.xml";
// 触发下载
downloadLink.click();
// 清理资源
URL.revokeObjectURL(downloadLink.href);
downloadLink.remove();
整合成一个方法,输入JSON数据 和xml文件名 就可以下载
// 定义一个函数,将JSON数据转换为XML字符串
function jsonToXml(json) {
var xml = '';
if (typeof json !== 'object') {
xml = json === undefined ? '' : String(json);
} else if (Array.isArray(json)) {
for (var i = 0; i < json.length; i++) {
xml += jsonToXml(json[i]);
}
} else {
for (var key in json) {
var value = json[key];
var child = jsonToXml(value);
if (typeof value === 'object') {
xml += '<' + key + '>' + child + '</' + key + '>';
} else {
xml += '<' + key + '>' + escapeXml(child) + '</' + key + '>';
}
}
}
return xml;
}
// 转义XML字符串中的特定字符
function escapeXml(text) {
return text.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
// 定义一个函数,接受JSON数据和文件名,下载JSON数据为XML文件
function downloadJsonAsXml(jsonData, fileName) {
// 转换JSON为XML
var xmlData = '<?xml version="1.0" encoding="UTF-8"?>' +
'<root>' + jsonToXml(jsonData) + '</root>';
// 创建Blob对象
var blob = new Blob([xmlData], { type: 'application/xml' });
// 创建下载链接
var downloadLink = document.createElement("a");
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = fileName;
// 触发下载
downloadLink.click();
// 清理资源
URL.revokeObjectURL(downloadLink.href);
downloadLink.remove();
}
// 假设这是你的JSON数据
var jsonData = {
"greeting": "Hello",
"subject": "World"
};
// 调用函数,下载JSON数据为XML文件
downloadJsonAsXml(jsonData, "n.xml");