封装过后引入函数调用xmlStrToJsonObj() 传入参数便可使用。
const xml = `<?xml version="1.0" encoding="utf-8" standalone="no"?><teacher number="1001"><name>WuSi</name><age>24</age><sex>male</sex></teacher >`
console.log('xml',xml)
console.log('转义JSON',currency.xmlStrToJsonObj(xml))
控制台输出结果如下图
复制下列函数即可。
/**
* @methodName :xmlStrToJsonObj // 方法名
* 描述: 转义xml为JSON格式 // 该方法作用
* @param {string} // 参数类型
* @return {object} // 返回数据函数类型
*/
xmlStrToJsonObj(xmlStr) {
var xmlObj = this.xmlStrToXmlObj(xmlStr);
var jsonObj = {};
if (xmlObj.childNodes.length > 0) {
jsonObj = this.xmlObjToJsonObj(xmlObj.childNodes);
}
return jsonObj;
},
xmlStrToXmlObj(xmlStr) {
var xmlObj = {};
if (document.all) {
var xmlDom = new ActiveXObject("Microsoft.XMLDOM");
xmlDom.loadXML(xmlStr);
xmlObj = xmlDom;
} else {
xmlObj = new DOMParser().parseFromString(xmlStr, "text/xml");
}
return xmlObj;
},
xmlObjToJsonObj(xmlNodes) {
var obj = {};
if (xmlNodes.length == 0) {
obj = '';
} else {
for (var i = 0; i < xmlNodes.length; i++) {
var node = xmlNodes[i];
if (typeof node.tagName == "undefined" || node.nodeName == "#text") {
obj = node.nodeValue;
} else {
var key = node.tagName;
var value = this.xmlObjToJsonObj(node.childNodes)
obj[key] = value;
}
}
}
return obj;
},