サーバーからダウンロードした XML ファイルが SDCard にあります。アプリ内で使用するために、その XML を開いて読み取ろうとしています。私はそれを開いて正常に読みましたが、JQuery は解析中にフリーズしています。
ファイルを取得したら、次のようにします。
var reader = new FileReader();
reader.onloadend = function (evt) {
parseXML(evt.target.result);
};
reader.readAsText(file);
そして、次のように解析を開始します。
function parseXML(xml){
$(xml).find('recipe').each(function(){
そして、それはそこで止まります。JQuery の ajax メソッドを使用してアプリ内 XML を読み込むと、正常に動作します。では、PhoneGap で FileReader を使用して XML データをロードすることについて何か特別なことはありますか?
更新: OK、多くの時間と別の開発者の助けを借りて、この問題は PhoneGap のバグのようです。特に FileTRansfer オブジェクト。
私はこれをしていました:
var ft = new FileTransfer();
var dlPath = dataDir.fullPath + "/recipes.xml";
ft.download("http://design.mydomain.com/dave/humana/recipes/recipes.xml", dlPath, addedNewRecipes, addError);
そして、 addedNewRecipes 内でダウンロードが成功したというトレースを取得します。そして、それは... すべてではありませんでした。ファイルが切り捨てられたため、parseXML が失敗しました。XML ファイル全体は約 90KB (~1600 行) で、おそらく 50 行で切り捨てられていました。
FileTransfer を FileWriter オブジェクトに置き換えて、動作するようになりました。
PhoneGap/Cordova は本当にまだベータ版ですよね。