1.首先,确保已经安装了xml2js
库。如果尚未安装,可以使用以下命令进行安装
npm install xml2js
2.在Vue组件的模板中,添加一个按钮和一个隐藏的文件输入框,用于选择XML文件
<div class="aircraftModelDataInjection">
<el-button type="primary" @click="AircraftModelDataSelection()">导入XMl</el-button>
<input type="file" ref="fileInput1" style="display: none" @change="ParsingXMLData">
</div>
3.请确保你已经正确安装了xml-js
库,并在代码中正确导入该库
import * as convert from 'xml-js';
4.导入xml
// 导入Xml
function AircraftModelDataSelection() {
fileInput1.value.click() // 触发input的点击事件
}
5.关于xml数据解析成js对象数据
// 将 xml 数据解析成 js 数据
function ParsingXMLData(event) {
const file = event.target.files[0]; // 获取选择的文件
const reader = new FileReader(); // 创建文件读取器对象
reader.onload = (e) => {
const xmlData = e.target.result; // 获取读取的 XML 文件数据
// 将 XML 转换为 json
const jsonData = convert.xml2json(xmlData, { ***pact: true, spaces: 4 });
const newdata = JSON.parse(jsonData)
// 获取 unifiedData,假设它是 newdata.modelInfo.***ponent 的值
const unifiedData = newdata.modelInfo.***ponent;
// 将 newdata 对象转换为 Tree 数据结构
const treeData = convertToTree(unifiedData);
// 新数组构造
const treeNewData = [
{
label: newdata.modelInfo._attributes.modelType,
children: treeData
}
]
Tree.value = treeNewData
};
reader.readAsText(file); // 以文本形式读取文件内容
}
6.将 JavaScript 对象转换为 Tree 数据结构
// 将 JavaScript 对象转换为 Tree 数据结构
function convertToTree(data) {
const rootNode = {
label: '',
children: []
};
if (data.length > 0) {
rootNode.children = data.map(item => {
const node = {
label: item._attributes?.name || '',
children: []
};
if (item.Product && item.Product.length > 0) {
node.children = convertToTree(item.Product);
}
return node;
});
}
return rootNode.children;
}
最终我是解析成我想要的Tree数据类型
可以对以上Tree数据节点实现增删改,然后导出XML格式数据
7.将 Tree 数据结构转换为 XML 数据结构
// 将 Tree 数据结构转换为 XML 数据结构
function convertToXmlData(data) {
const xmlNode = {
_attributes: {
name: data.label
}
};
if (data.children && data.children.length > 0) {
xmlNode.Product = data.children.map(child => convertToXmlData(child));
}
return xmlNode;
}
8.导出 XML 文件
// 导出 XML 文件
function ExportXml() {
const jsonData = Tree.value; // 假设 Tree.value 包含要导出为 XML 的数据
// 构造根节点
const rootElement = {
_attributes: {
modelType: jsonData[0].label
},
***ponent: convertToXmlData(jsonData[0])
};
// 将 JavaScript 对象转换为 XML 字符串
const xmlData = convert.js2xml(rootElement, { ***pact: true, ignore***ment: true, spaces: 2 });
// 创建并下载 XML 文件
const xmlBlob = new Blob([xmlData], { type: 'text/xml' });
const exportLink = document.createElement('a');
exportLink.href = URL.createObjectURL(xmlBlob);
exportLink.download = 'export.xml';
exportLink.click();
}
导出后