新聞中心
這篇文章主要介紹javascript中xml如何轉(zhuǎn)json,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
石家莊網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),石家莊網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為石家莊數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的石家莊做網(wǎng)站的公司定做!
JavaScript可以做什么
1.可以使網(wǎng)頁具有交互性,例如響應(yīng)用戶點(diǎn)擊,給用戶提供更好的體驗(yàn)。 2.可以處理表單,檢驗(yàn)用戶的輸入,并提供及時(shí)反饋節(jié)省用戶時(shí)間。 3.可以根據(jù)用戶的操作,動(dòng)態(tài)的創(chuàng)建頁面。 4使用JavaScript可以通過設(shè)置cookie存儲(chǔ)在瀏覽器上的一些臨時(shí)信息。
javascript xml轉(zhuǎn)json的方法:首先通過“l(fā)oadXml(str) {...}”加載xml數(shù)據(jù);然后通過“xmlTojson(xmlObj, nodename,isarray){..}”將xml數(shù)據(jù)轉(zhuǎn)成json對(duì)象的數(shù)據(jù)即可。
本文操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
1、代碼
//加載xml數(shù)據(jù) function loadXml(str) { if (str == null) { return null; } var doc = str; try{ doc = createXMLDOM(); doc.async = false; doc.loadXML(str); }catch(e){ doc = $.parseXML(str); } return doc; } //xml數(shù)據(jù)轉(zhuǎn)成json對(duì)象的數(shù)據(jù) function xmlTojson(xmlObj, nodename, isarray){ var obj = $(xmlObj); var itemobj = {}; var nodenames = ""; var getAllAttrs = function(node){//遞歸解析xml 轉(zhuǎn)換成json對(duì)象 var _itemobj = {}; var notNull = false; var nodechilds = node.childNodes; var childlenght = nodechilds.length; var _attrs = node.attributes; var firstnodeName = "#text"; try{ firstnodeName = nodechilds[0].nodeName; }catch(e){ } if((childlenght > 0 && firstnodeName != "#text") || _attrs.length > 0){ var _childs = nodechilds; var _childslength = nodechilds.length; var _fileName_ = ""; if(undefined != _attrs){ var _attrslength = _attrs.length; for(var i = 0; i < _attrslength; i++){//解析xml節(jié)點(diǎn)屬性 var attrname = _attrs[i].nodeName; var attrvalue = _attrs[i].nodeValue; _itemobj[attrname] = attrvalue; } } for (var j = 0; j < _childslength; j++) {//解析xml子節(jié)點(diǎn) var _node = _childs[j]; var _fildName = _node.nodeName; if("#text" == _fildName){break;}; if(_itemobj[_fildName] != undefined){//如果有重復(fù)的節(jié)點(diǎn)需要轉(zhuǎn)為數(shù)組格式 if(!(_itemobj[_fildName] instanceof Array)){ var a = _itemobj[_fildName]; _itemobj[_fildName] = [a];//如果該節(jié)點(diǎn)出現(xiàn)大于一個(gè)的情況 把第一個(gè)的值存放到數(shù)組中 } } var _fildValue = getAllAttrs(_node); try{ _itemobj[_fildName].push(_fildValue); }catch(e){ _itemobj[_fildName] = _fildValue; _itemobj["length"] = 1; } } }else{ _itemobj = (node.textContent == undefined) ? node.text : node.textContent; } return _itemobj; }; if(nodename){ nodenames = nodename.split("/") } for(var i = 0;i < nodenames.length; i++){ obj = obj.find(nodenames[i]); } $(obj).each(function(key, item){ if(itemobj[item.nodeName] != undefined){ if(!(itemobj[item.nodeName] instanceof Array)){ var a = itemobj[item.nodeName]; itemobj[item.nodeName] = [a]; } itemobj[item.nodeName].push(getAllAttrs(item)); }else{ if(nodenames.length > 0){ itemobj[item.nodeName] = getAllAttrs(item); }else{ itemobj[item.firstChild.nodeName] = getAllAttrs(item.firstChild); } } }); if(nodenames.length > 1){ itemobj = itemobj[nodenames[nodenames.length-1]]; } if(isarray && !(itemobj instanceof Array) && itemobj != undefined){ itemobj = [itemobj]; } return itemobj; } //實(shí)例測(cè)試 var dataStr = '' var xmlObj = loadXml(dataStr); var jsonData = xmlTojson(xmlObj, 'userList/user', true); console.log(jsonData)
2、測(cè)試結(jié)果
以上是“javascript中xml如何轉(zhuǎn)json”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前標(biāo)題:javascript中xml如何轉(zhuǎn)json
文章地址:http://fisionsoft.com.cn/article/pegoch.html