如何更快/更有效地使用 AJAX 遍历 XML 文件
how can i traverse an xml file using ajax faster/more efficiently?
我有一个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个零件的信息大约需要20-150秒。 我已经对我正在进行的查询进行了计时,以获取零件计数/零件名称(我注释掉了 AJAX 代码),对于大部分零件计数,这些查询不到 200 毫秒。
任何帮助将不胜感激!
当您执行 $(data)
操作时,您正在解析整个 XML 数据并在循环中创建一个新对象。
把它放在你的循环之前,你应该看到一个显着的差异。以下是更新的代码的相关部分:
...
var $data = $(data); // Do this once
while (covCnt >= i)
{
part = DKB.GetClearedPart(i); //Returns name of part
$data.find("part").each(function() {
...
相关文章:
- 循环遍历以数组为值的Javascript对象
- 遍历类元素数组,并在jquery中选择同级元素
- Jquery遍历表元素
- Chrome扩展:遍历不同的页面并收集数据
- 使用 ajax、PHP 和 Javascript 循环遍历 JSON 文件
- 循环遍历 AJAX 响应元素
- 使用字符串从 jQuery AJAX 遍历 JSON 对象
- 遍历两个 JSON 数组 Ajax
- 如何更快/更有效地使用 AJAX 遍历 XML 文件
- 如何遍历 UL 中的 LI 项,获取特定属性,并通过 $.ajax 数据传递它们
- 循环遍历从 jquery ajax 调用返回的 json 对象
- 如何遍历 AJAX 加载的复选框
- jquery ajax 无法循环遍历找到的数据
- 循环遍历多个选择 ajax 数据
- 当只需要遍历DOM时,$.ajax&延期
- 在jquery的AJAX调用中循环遍历URL
- 遍历ajax调用的最佳方式是什么?
- 从ajax json请求中,如何动态地将对象添加到数组中,以便我可以遍历它们
- 无法在ajax响应后遍历对象
- 使用 promise 遍历 ajax 函数