关于js解析xml,jquery解析xml,问题很棘手。

半壶水 发布于 2013/11/08 11:27
阅读 1K+
收藏 0

请大家给予支持,我QQ:270077057,再次拜谢各位。

这个xml我是使用一个控件,从一个服务器中获取的返回值

var ocx; //定义控件对象
ocx = document.getElementById("ocx");    
var xmlDom=ocx.GetDeviceXml();//获取设备列表 

 var xml = $.parseXML(xmlDom);  //使用Jquery解析,在这里就出现错误,具体看图1
                var result="";  
                $(xml).find("DeviceList Device").each(function () {  
                    result += "ID = " + $(this).attr("ID")  
                        + ";Name =" + $(this).attr("Name") ;
                });  
                alert(result); 
图1:是用alert(xmlDom); 会弹出来xml数据

第二种,直接js解析

这个就是权限问题,比较麻烦。

function parseXml(){
        var ocx; //定义控件对象
        ocx = document.getElementById("ocx");    
        var xmlOcx=ocx.GetDeviceXml();//获取设备列表
        
            var xmldoc=loadXML(xmlOcx)
             var elements = xmldoc.getElementsByTagName("Device");
             for (var i = 0; i < elements.length; i++) {
             
                alert(elements[i].getElementsByTagName("ID")[0].firstChild.nodeValue);
                alert(elements[i].getElementsByTagName("Name")[0].firstChild.nodeValue);            
                   //var name = elements[i].getElementsByTagName("ID")[0].firstChild.nodeValue;
                //var ip = elements[i].getElementsByTagName("Name")[0].firstChild.nodeValue;               
            }
    }

    loadXML = function(xmlString){
        var xmlDoc=null;
        //判断浏览器的类型
        //支持IE浏览器
        if(!window.DOMParser && window.ActiveXObject){   //window.DOMParser 判断是否是非ie浏览器
            var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
            for(var i=0;i<xmlDomVersions.length;i++){
                try{
                    xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                    xmlDoc.async = false;
                    xmlDoc.loadXML(xmlString); //loadXML方法载入xml字符串
                    break;
                }catch(e){
                    alert(e.message);
                }
            }
        }
        //支持Mozilla浏览器
        else if(window.DOMParser && document.implementation && document.implementation.createDocument){
            try{
                /* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。
                 * 要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法
                 * parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型
                 * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意,不支持 "text/html"。
                 */
                domParser = new  DOMParser();
                xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
            }catch(e){
                alert(e.message);
            }
        }
        else{
            return null;
        }
        return xmlDoc;
    }

加载中
返回顶部
顶部