js导出xml文件,以及导入xml文件并将xml文件转成json格式
【代码】js将xml文件转成json格式。
·
一.导出xml文件
1.处理函数:
//导出xml的表头
let allColumns=[
{
title:"名字",
key:"name"
},
{
title:"性别",
key:"sex"
},
{
title:"年龄",
key:"age"
},
{
title:"身高",
key:"height"
},
];
//需要导出的xml数据
let exportData=[
{
name:"001",
sex:"男",
age:"23",
height:"178cm"
},
{
name:"002",
sex:"女",
age:"25",
height:"165cm"
},
]
//注意表头中的key要与数据中的键名对应
//导出xml文件的名称
let fileName="people_table";
// 导出xml格式
function exportXml(columns, dataList, fileName) {
let str = '<?xml version="1.0" encoding="utf-8" ?>\n<dataSource>\n';
dataList.forEach(dataItem => {
str += `<dataItem>\n`;
columns.forEach(columnsItem => {
str += `<${columnsItem.key}>${dataItem[columnsItem.key]}</${columnsItem.key}>\n`;
});
str += `</dataItem>\n`;
});
str += '</dataSource>';
let downloadLink = document.createElement('a');
let uri = window.URL.createObjectURL(new Blob([str], { type: 'text/plain;charset=utf-8,\ufeff' }));
downloadLink.href = uri;
downloadLink.download = `${fileName}.xml`;
downloadLink.click();
window.URL.revokeObjectURL(uri);
}
//调用导出方法
exportXml(allColumns, exportData,fileName);
2.导出文件打开效果:
1)浏览器打开
2)文本文档打开
二.导入xml文件
1.获取本地xml文件主要代码:
<script setup>
function btnClick() {
document.getElementById("file1").click();
}
function openFile(e) {
var file = e.target.files[0];
var reader = new FileReader();
//读取成功后的处理方法
reader.onload = function(e) {
var xmlString= e.target.result;
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString, "text/xml");
// 将XML文档转换为JSON对象
var json = xmlToJson(xmlDoc.documentElement);
console.log(json);
}
//读取文件
reader.readAsText(file);
}
</script>
<template>
<button @click="btnClick">Open</button>
<input id="file1" type="file" style="display:none" @change="openFile">
</template>
2.将xml文件转换成json格式的处理函数:
// 假设有一个XML字符串
var xmlString = `
<dataSource>
<dataItem>
<name>001</name>
<sex>男</sex>
<age>23</age>
<height>178cm</height>
</dataItem>
<dataItem>
<name>002</name>
<sex>女</sex>
<age>25</age>
<height>165cm</height>
</dataItem>
</dataSource>`;
// 创建一个DOMParser实例
var parser = new DOMParser();
// 使用DOMParser解析XML字符串
var xmlDoc = parser.parseFromString(xmlString, "text/xml");
// 定义一个递归函数来转换XML节点到JSON对象
function xmlToJson(xml) {
// 创建返回的对象
var obj = {};
if (xml.nodeType === 1) { // element
// 处理属性
if (xml.attributes.length > 0) {
obj["@attributes"] = {};
for (var j = 0; j < xml.attributes.length; j++) {
var attribute = xml.attributes.item(j);
obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
}
}
} else if (xml.nodeType === 3) { // text
obj = xml.nodeValue;
}
// 处理子节点
if (xml.hasChildNodes()) {
for(var i = 0; i < xml.childNodes.length; i++) {
var item = xml.childNodes.item(i);
var nodeName = item.nodeName;
if (typeof (obj[nodeName]) === "undefined") {
obj[nodeName] = xmlToJson(item);
} else {
if (typeof (obj[nodeName].push) === "undefined") {
var old = obj[nodeName];
obj[nodeName] = [];
obj[nodeName].push(old);
}
obj[nodeName].push(xmlToJson(item));
}
}
}
return obj;
};
// 将XML文档转换为JSON对象
var json = xmlToJson(xmlDoc.documentElement);
console.log(json);

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)