javascript读取长XML字符串,页面会卡死!读完了才释放,怎么异步操作呢。
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");
}
}
}
------解决方案--------------------使用XMLHTTP、XMLHttpRequest去读取
------解决方案--------------------不懂,帮顶...
不过LZ可以在后台把XML转换成JSON返回给前边,然后用jQuery来处理JSON数据会不会快点儿
------解决方案--------------------用javascript 读XML字符串里面的内容了。
那可能没有太好的方法,只能使用 DOM操作。
------解决方案--------------------当然,也可以采用些优化的方法,如
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方法等
------解决方案--------------------干嘛用xml用json多好的选择啊
------解决方案--------------------干嘛用xml用json多好的选择啊