您的位置:首页 > Web前端 > JavaScript

JAVASCRIPT处理返回的XML字符串

2008-03-09 14:58 459 查看
当通过AJAX操作的时候,返回的XML如下 :


<?xml version="1.0" encoding="gbk"?>


<root>


<checkresult>


<%=result%>


</checkresult>


<checkresult>


<%=message%>


</checkresult>


</root>

其中返回两个内容,一个结果数,以及一个针对该结果数的消息。

AJAX这个就不用去说怎么样操作了,下面这个函数只将返回字符串组成XML包的形式:

 


//装载字符串,将字符串组成XML的形式返回


function loadXML(xmlString)




...{


    var xmldoc;




    try ...{


        xmldoc = new ActiveXObject("Microsoft.XMLDOM");


        if(!xmldoc) xmldoc = new ActiveXObject("MSXML2.DOMDocument.3.0");




    } catch(e)...{}




    if(!xmldoc) ...{


        return null;




    } else ...{


        xmldoc.async = "false";


        xmldoc.loadXML(xmlString);




        if(xmldoc.parseError.errorCode == 0 ) ...{


            return xmldoc;




        } else ...{


            return null;


        }


    }


}

但其中需要注意一点,不能够直接利用返回得到的字节流,因为他们不属于字符串,这个时候需要将得到的字节流转换为字符串,才可以操作成功。我本人就遇到这个问题,直接操作就会出错,但我把这里传入的参数改为对应的XML字符串就可以,但我现在还不知道怎么样将字节流转换为字符串,因为总是要内网外网的切换做测试,挺麻烦的。

下面一个方面就是将XML中我们需要的数据,处理数组,这样我们就可以在其它的地方使用:

 


//获得检测结果




function getURLResult(URL)




...{


    var url = URL;


    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");


    xmlhttp.open("POST", url, false);


    xmlhttp.send();


    var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");    


    xmlDoc = loadXML(bytes2BSTR(xmlhttp.responseBody));


    var NodeLists = xmlDoc.selectNodes("/root/checkresult");


    var result = new Array();


    




   for(var i=0;i<NodeLists.length;i++)...{


        result[i] = NodeLists[i].text;


    }


    return result;


}

在前台页面,就可以将需要的结果进行操作了。

本文出自:冯立彬的博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息