javascript实现xml字符串转换json格式数据
前言:
公司一个老项目重构,后端返回数据为xml格式。
而现有的前后端分离开发中,后端大部分返回的都是json格式的数据给到前端,所以前端也是直接对后端返回的json数据进行解析。
因此就需要对老接口返回的xml数据进行转换了,看了下老项目中对xml数据解析的相关代码,有1700+行,可谓是比较恐怖了,因此决定直接将xml字符串转换成json格式,以适应现有框架。
解决方案:
在接口请求封装函数中对接口返回数据进行格式转换操作,页面的开发不受任何影响。
关键代码:
1 /** 2 * xml字符串转换xml对象数据 3 * @param {Object} xmlStr 4 */ 5 function xmlStr2XmlObj(xmlStr) { 6 var xmlObj = {}; 7 if (document.all) { 8 var xmlDom = new ActiveXObject("Microsoft.XMLDOM"); 9 xmlDom.loadXML(xmlStr); 10 xmlObj = xmlDom; 11 } else { 12 xmlObj = new DOMParser().parseFromString(xmlStr, "text/xml"); 13 } 14 return xmlObj; 15 } 16 17 /** 18 * xml字符串转换json数据 19 * @param {Object} xml 20 */ 21 function xmlObj2json(xml) { 22 var xmlObj = xmlStr2XmlObj(xml); 23 var jsonObj = {}; 24 if (xmlObj.childNodes.length > 0) { 25 jsonObj = xml2json(xmlObj); 26 } 27 return jsonObj; 28 } 29 30 /** 31 * xml转换json数据 32 * @param {Object} xml 33 */ 34 function xml2json(xml) { 35 try { 36 var obj = {}; 37 if (xml.children.length > 0) { 38 for (var i = 0; i < xml.children.length; i++) { 39 var item = xml.children.item(i); 40 var nodeName = item.nodeName; 41 if (typeof(obj[nodeName]) == "undefined") { 42 obj[nodeName] = xml2json(item); 43 } else { 44 if (typeof(obj[nodeName].push) == "undefined") { 45 var old = obj[nodeName]; 46 obj[nodeName] = []; 47 obj[nodeName].push(old); 48 } 49 obj[nodeName].push(xml2json(item)); 50 } 51 } 52 } else { 53 obj = xml.textContent; 54 } 55 return obj; 56 } catch (e) { 57 console.log(e.message); 58 } 59 }
以上代码即实现了xml字符串到json格式数据的转换,后边会继续写问讲解如何在axios请求封装中进行具体操作。
个人原创博客,转载请注明来源地址:https://www.cnblogs.com/xyyt
分类:
javascript脚本技术
, web前端开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通