2012-06-11 54 views
1

我有一個XML文件,如下所示:如何更快速/更有效地使用ajax遍歷xml文件?

<UUT> 
<DKBFile>091750</DKBFile> 
<part> 
    <name>FL_U1</name> 
    <xcoord>439</xcoord> 
    <ycoord>132</ycoord> 
    <width>55</width> 
    <height>24</height> 
</part> 
</UUT> 

,可能有幾百個「零件」,我試圖讓名/座標信息。量,和我得到的,變化的信息,但穿越變得很慢一旦我試圖讓這個信息超過100份的部件。這裏是我的代碼:

$.ajax({ 
url: "PROFILER_ShopAid/shopaid.xml", 
dataType: ($.browser.msie) ? "xml" : "text/xml", 

success: function(data){  

var i = 1; //array traversal 
var xcoord = 0; 
var ycoord = 0; 
var width = 0; 
var height = 0; 
var part = ""; 
var nameFound = ""; 

//Get Part Count 
var covCnt = DKB.GetClearedPartCnt(); //Gets number of parts 

    //Get Part Info 
while (covCnt >= i) 
{ 
    part = DKB.GetClearedPart(i); //Returns name of part 

    $(data).find("part").each(function() { 
     nameFound = $(this).find("name").text(); 

     if(part.toLowerCase() == nameFound.toLowerCase()) 
     { 
      xcoord = parseInt($(this).find("xcoord").text()); 
      ycoord = parseInt($(this).find("ycoord").text()); 
      width = parseInt($(this).find("width").text()); 
      height = parseInt($(this).find("height").text()); 

     } 

    }); 
    i = i + 1; 
} 
}, 

error: function(){ 
} 

}); 

XML文件在本地服務器上,此代碼被在HTA(HTML應用程序文件)使用。有沒有更有效的方法去遍歷xml文件?現在,需要大約15-20秒才能獲得約150個零件的信息。我已經超時我正在做,以獲得零件數/部件名稱(我註釋掉Ajax代碼)查詢,而這些都是200毫秒下很大一部分計數。

任何幫助,將不勝感激!

回答

0

您解析整個XML數據和創建你的循環內一個新的對象,當你做$(data)

相反,你應該把你的循環之前,你應該看到一個顯著差異。這裏是你的代碼的相關部分更新:

... 

var $data = $(data); // Do this once 

while (covCnt >= i) 
{ 

    part = DKB.GetClearedPart(i); //Returns name of part 

    $data.find("part").each(function() { 

    ...