javascript中怎么将xml转为json
时间:2021-04-23
来源:互联网
标签:
今天PHP爱好者给大家带来javascript中将xml转换为json字符串的方法:首先通过XML字符串或请求XML文件来获取XML的DOM对象;然后通过遍历和递归来获取子元素的nodeValue值;最后拼接出JSON字符串即可。希望对大家有所帮助。

javascript中怎么将xml转为json方法
本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
利用JavaScript将XML转换为JSON
首先通过XML字符串来生成XML的DOM对象:
/**
* 通过传入xml的内容字符串来解析xml
* @param xmlString xml字符串
* @returns xml的Document对象
*/
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;
}
或者通过请求XML文件来获取XML的DOM对象:
/**
* 通过传入xml文件路径来解析xml文档
* @param xmlFilePath xml文档路径,如:files/test.xml
* @returns xml的Document对象
*/
function getXmlDocumentByFilePath(xmlFilePath) {
//xmlDocument对象
var xmlDoc = null;
//xmlhttp对象
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;
}
接下来就是重点的部分了,通过遍历和递归获取子元素的nodeValue,来拼接出JSON字符串,实现将XML转换成JSON字符串:
/**
* 将XML的Document对象转换为JSON字符串
* @param xmlDoc xml的Document对象
* @return string
*/
function convertToJSON(xmlDoc) {
//准备JSON字符串和缓存(提升性能)
var jsonStr = "";
var buffer = new Array();
buffer.push("{");
//获取xml文档的所有子节点
var nodeList = xmlDoc.childNodes;
generate(nodeList);
/**
* 中间函数,用于递归解析xml文档对象,并附加到json字符串中
* @param node_list xml文档的的nodeList
*/
function generate(node_list) {
for (var i = 0; i < node_list.length; i++) {
var curr_node = node_list[i];
//忽略子节点中的换行和空格
if (curr_node.nodeType == 3) {
continue;
}
//如果子节点还包括子节点,则继续进行遍历
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对象,然后通过调用convertToJSON(xmlDocument)传入xml的Ducument对象即可得到转换后的JSON字符串。
适用范围:不含有attribute的任意XML文档。
以上就是javascript中怎么将xml转为json的详细内容,更多请关注php爱好者其它相关文章!
-
核芯显卡是什么意思?核芯显卡和独立显卡有什么区别? 时间:2025-12-19 -
什么是算术逻辑单元ALU 算术逻辑单元的功能和结构 时间:2025-12-19 -
什么是视觉识别色差检测 视觉识别色差检测的原理、技术特点、应用及常用工具 时间:2025-12-19 -
什么是流量控制 流量控制和拥塞控制的区别 时间:2025-12-19 -
GPU虚拟化是什么意思 GPU虚拟化有哪三种方法 时间:2025-12-19 -
独显是什么意思 独显和集显的区别 时间:2025-12-19
今日更新
-
163免费邮箱快速入口-163免费邮箱一键登录入口
阅读:18
-
想知道欧拉的梗是什么梗吗?揭秘数学大神的有趣冷知识,快来涨姿势!
阅读:18
-
币安收不到验证码?试试语音验证码等替代方法
阅读:18
-
微博网页版登录入口-微博PC端快速登录入口
阅读:18
-
魔兽世界大脚人口普查数据在哪查-大脚人口普查官网最新查看入口分享
阅读:18
-
币安提现被拒如何维权 用户申诉渠道与解决指南
阅读:18
-
漫蛙漫画网页版免费无限看-漫蛙漫画网页版全站漫画免费畅读无阻
阅读:18
-
欧拉是什么梗?揭秘网络热词欧拉的爆火原因和趣味用法
阅读:18
-
永劫无间手游官网入口在哪找-永劫无间手游官网入口地址一键获取
阅读:18
-
币安防钓鱼码支持随机生成吗 安全设置详解
阅读:18










