這篇文章將為大家詳細(xì)講解有關(guān)javascript中將xml轉(zhuǎn)為json的方法,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、高坪ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的高坪網(wǎng)站制作公司
javascript中將xml轉(zhuǎn)換為json字符串的方法:首先通過XML字符串或請(qǐng)求XML文件來(lái)獲取XML的DOM對(duì)象;然后通過遍歷和遞歸來(lái)獲取子元素的nodeValue值;最后拼接出JSON字符串即可。
利用JavaScript將XML轉(zhuǎn)換為JSON
首先通過XML字符串來(lái)生成XML的DOM對(duì)象:
/**
* 通過傳入xml的內(nèi)容字符串來(lái)解析xml
* @param xmlString xml字符串
* @returns xml的Document對(duì)象
*/
function getXmlDocumentByXmlString(xmlString) {
var xmlDoc = null;
if (window.DOMParser) {
var parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlString, "text/xml");
} else {
//IE
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmlString);
}
return xmlDoc;
}或者通過請(qǐng)求XML文件來(lái)獲取XML的DOM對(duì)象:
/**
* 通過傳入xml文件路徑來(lái)解析xml文檔
* @param xmlFilePath xml文檔路徑,如:files/test.xml
* @returns xml的Document對(duì)象
*/
function getXmlDocumentByFilePath(xmlFilePath) {
//xmlDocument對(duì)象
var xmlDoc = null;
//xmlhttp對(duì)象
var xmlhttp = null;
if (window.XMLHttpRequest) {
//IE7+, FireFox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
//IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", xmlFilePath, false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
return xmlDoc;
}接下來(lái)就是重點(diǎn)的部分了,通過遍歷和遞歸獲取子元素的nodeValue,來(lái)拼接出JSON字符串,實(shí)現(xiàn)將XML轉(zhuǎn)換成JSON字符串:
/**
* 將XML的Document對(duì)象轉(zhuǎn)換為JSON字符串
* @param xmlDoc xml的Document對(duì)象
* @return string
*/
function convertToJSON(xmlDoc) {
//準(zhǔn)備JSON字符串和緩存(提升性能)
var jsonStr = "";
var buffer = new Array();
buffer.push("{");
//獲取xml文檔的所有子節(jié)點(diǎn)
var nodeList = xmlDoc.childNodes;
generate(nodeList);
/**
* 中間函數(shù),用于遞歸解析xml文檔對(duì)象,并附加到j(luò)son字符串中
* @param node_list xml文檔的的nodeList
*/
function generate(node_list) {
for (var i = 0; i < node_list.length; i++) {
var curr_node = node_list[i];
//忽略子節(jié)點(diǎn)中的換行和空格
if (curr_node.nodeType == 3) {
continue;
}
//如果子節(jié)點(diǎn)還包括子節(jié)點(diǎn),則繼續(xù)進(jìn)行遍歷
if (curr_node.childNodes.length > 1) {
buffer.push("\"" + curr_node.nodeName + "\": {");
generate(curr_node.childNodes);
} else {
var firstChild = curr_node.childNodes[0];
if (firstChild != null) {
//nodeValue不為null
buffer.push("\"" + curr_node.nodeName + "\":\"" + firstChild.nodeValue + "\"");
} else {
//nodeValue為null
buffer.push("\"" + curr_node.nodeName + "\":\"\"");
}
}
if (i < (node_list.length - 2)) {
buffer.push(",");
} else {
break;
}
}
//添加末尾的"}"
buffer.push("}");
}
jsonStr = buffer.join("");
return jsonStr;
}使用方式:通過getXmLDocumentByFilePath(xmlFilePath)或者getXmlDocumentByXmlString(xmlString)獲取XML的Document對(duì)象,然后通過調(diào)用convertToJSON(xmlDocument)傳入xml的Ducument對(duì)象即可得到轉(zhuǎn)換后的JSON字符串。
適用范圍:不含有attribute的任意XML文檔。
關(guān)于“javascript中將xml轉(zhuǎn)為json的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
文章標(biāo)題:javascript中將xml轉(zhuǎn)為json的方法
分享網(wǎng)址:http://chinadenli.net/article32/jiippc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、軟件開發(fā)、品牌網(wǎng)站制作、營(yíng)銷型網(wǎng)站建設(shè)、商城網(wǎng)站、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)