0

我正在开发一个 Phonegap Android 应用程序,它是某种目录和产品搜索。它与提供所有数据的服务器 Intranet 同步。

问题是应用程序都已开发,除了同步崩溃。我注意到问题在于 XML 解析。

同步是一个带有按钮的 HTML。单击按钮后,它将启动一个 JS 函数,如下所示:

$.ajax({
     url : "file:///android_asset/xml/produtos.xml",
     data : "{}",
     async : false,
     cache : false,
     dataType : "xml",
}).error(function (xhr, ajaxOptions, thrownError){
     alert(xhr.status);
     alert(thrownError);
}).done(function(data) {
     // search all data, download all files from XML URL tag (used this: https://github.com/phonegap/phonegap-plugins/tree/master/Android/Downloader), construct SQLite statements and throw it in an Array for late DB transaction
     if($(data).find("produtos").length > 0 && $(data).find("produtos").eq(0).find("produto").length > 0) {
          $(data).find("produtos").eq(0).find("produto").each(function() {
               i++;
               produtos[i] = "CONSTRUCT SQL STATEMENT WITH XML PARSED DATA LIKE $(this).find('nome').text()";
          }
     }
});

XML 文件非常大,大约 700kb,大约有 1800 个产品。每个产品内部有大约 10 个直接节点和大约 5 个子节点,内部有其他 10 个节点(细节、图像、相关产品等)。因此,每个产品大约有 80 个节点。我的 XML 中有 1800 * 80 = 144000 个节点。此外,每个产品都有大约 5 个 URL 节点,它们是要下载的文件(我使用的是https://github.com/phonegap/phonegap-plugins/tree/master/Android/Downloader插件)。

如果我开始与下载同步,它会因内存泄漏而停止(大约 512mb,不记得正确的消息,但我可以明天发布)。如果我在没有下载的情况下开始同步(只是 XML 解析),则大约需要 30 分钟并且什么都不做(感觉像是在处理,但什么也不做)。我不知道是否有其他选项可以同步此初始数据(其他同步是通过参数传递最后一个同步时间戳来进行的)。你们有什么问题或(可能的)解决方案吗?如果你需要更多信息,问我,我需要你的帮助。

谢谢你们!!!

4

1 回答 1

1

我认为您必须将您的 xml 文件拆分为更易消化的块。144,000 个节点对于移动/JS 应用程序来说是不合理的 :-) 当然问题是,您是否控制 xml 目录的生成?

于 2012-05-20T17:58:35.950 回答