1

我有一个如下所示的 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 文件?现在,获取大约 150 个零件的信息大约需要 15-20 秒。我已经为获取零件计数/零件名称(我注释掉了 AJAX 代码)而进行的查询计时了,对于大部分零件计数来说,这些查询的时间都在 200 毫秒以下。

任何帮助将不胜感激!

4

1 回答 1

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() {

    ...
于 2012-06-11T02:16:39.383 回答