function getxml(xml) 

    this.isIE=true; if (window.ActiveXObject){isIE=true;}else{isIE=false;} 
    var node_xml;if (isIE) {xmlDc = new ActiveXObject("Msxml2.DOMDocument");} 
    else {if (document.implementation && document.implementation.createDocument) xmlDc = document.implementation.createDocument("","",null); } 
    xmlDc.async = true; if(isIE){xmlDc.loadXML(xml);} else {var oParser = new DOMParser();xmlDc = oParser.parseFromString(xml,"text/xml");} 
    return xmlDc; 

var data='
<x>
<r a="1" b="2" c="3" />
<r a="2" b="2" c="3" />
<r a="3" b="2" c="3" />
<r a="4" b="2" c="3" />
<r a="5" b="2" c="3" />
<r a="6" b="2" c="3" />
<r a="7" b="2" c="3" />
    .............
</x>';
//下面readdata函数读取长XML字符串,页面会卡死!读完了页面才释放,有没有异步操作方法呢。
function readdata(data) 
{
    xmlDoc=getxml(data);
    if(xmlDoc.childNodes.length!=0)
    {
        for(i=0;i<xmlDoc.childNodes[0].childNodes.length;i++)
        {   
            var a=xmlDoc.childNodes[0].childNodes[i].getAttribute("a");
            var b=xmlDoc.childNodes[0].childNodes[i].getAttribute("b");
            var c=xmlDoc.childNodes[0].childNodes[i].getAttribute("c");
        }
    }
}

解决方案 »

  1.   

    本帖最后由 net_lover 于 2012-07-27 14:39:48 编辑
      

  2.   

    楼上,不是的,XML已经读取出来了,不需要XMLHTTP、XMLHttpRequest了。
    现在的问题是,用javascript 读XML字符串里面的内容了。
      

  3.   

    用javascript 读XML字符串里面的内容了。那可能没有太好的方法,只能使用 DOM操作。
      

  4.   

    当然,也可以采用些优化的方法,如
     var droot = xmlDoc.childNodes[0]
     for(i=0,count = droot.childNodes.length;i<count ;i++)
      {  
      var a=droot.childNodes[i].getAttribute("a");
      var b=droot.childNodes[i].getAttribute("b");
      var c=droot.childNodes[i].getAttribute("c");
      }看看效果如何另外还有getElementsByTagName,selectNodes方法等