• 技术文章 >web前端 >js教程

    javascript中怎么将xml转为json

    青灯夜游青灯夜游2021-04-07 15:37:36原创45

    javascript中将xml转换为json字符串的方法:首先通过XML字符串或请求XML文件来获取XML的DOM对象;然后通过遍历和递归来获取子元素的nodeValue值;最后拼接出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中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:javascript xml json
    上一篇:如何在JavaScript中获取表单元素 下一篇:javascript中怎么将字符串转为数字
    第15期线上培训班

    相关文章推荐

    • javascript中this的用法有哪些• javascript如何删除所有的cookie• javascript删除数组元素的方法• javascript如何判断字符串中是否包含某个字符串• JavaScript双斜杆代表啥• javascript用什么存储数据

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网