2013-03-14 4 views
1
var xml2; 

function onLoad() { 
    document.addEventListener("deviceready", onDeviceReady, false); 
} 

function onDeviceReady() { 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 
} 

function gotFS(fileSystem){ 
    fileSystem.root.getFile("ccw.xml", null, gotFile, fail); 
} 

function gotFileEntry(fileEntry) { 
    fileEntry.file(gotFile, fail); 
} 

function gotFile(file) { 
    readAsText(file); 
} 

function readAsText(file) { 

    var reader = new FileReader(); 

    reader.readAsText(file);  

    reader.onload = function(){ 
    }; 

    xml2 = reader.result; 

    writeJson(); 

} 

function fail(evt) { 
    console.log(evt.target.error.code); 
} 

function parseXml(xml) { 

    var dom = null; 

    if (window.DOMParser) { 
     try { 
      dom = (new DOMParser()).parseFromString(xml, "text/xml"); 
     } 
     catch (e) { dom = null; } 
    } 
    else if (window.ActiveXObject) { 
     try { 
      dom = new ActiveXObject('Microsoft.XMLDOM'); 

      dom.async = false; 

      if (!dom.loadXML(xml)) // parse error .. 
      window.alert(dom.parseError.reason + dom.parseError.srcText); 
     } 
     catch (e) { dom = null; } 
    } 
    else 
     alert("oops"); 

    return dom; 
} 

function writeJson(){ 

    var json; 

    // for(var i = 0 ; i < xml.length ; i++) { 
    show("\n\n" + (json = xml2json(parseXml(xml2), " ")) + "\n\n"); 
    //  console.log("====="+i+"/"+xml.lenght+"====="); 
    // } 
} 

function show(s) { 

    document.getElementById("out").innerHTML += (s+"\n").replace(/&/g, "&amp;").replace (/</g,"&lt;").replace(/>/g,"&gt;").replace(/\n/g, "<br/>") + "<hr/>"; 
} 

Этот код является xml-кодом для разбора json. я следую ссылке на телефонную связь. но мой filerader не меняет stateReady. это всегда состояние 0. Пожалуйста, помогите мне .. filereader.result метод не работает в phonegap? Я хочу пойти домой. :-(й всегда будет видеть этот пост.Phonegap, ios filereader не работает

+0

в OnDeviceReady вызывается приложением? вы можете проверить его, поставив простое предупреждение в событии OnDeviceReady. – Whizkid747

ответ

0

Ну, вы, вероятно, уже решить, но в случае полезную для других, ваши обратных вызовов не правильно прикованы, просто изменить свою линию с этой линией

fileSystem.root.getFile("ccw.xml", null, gotFile, fail); 

с

fileSystem.root.getFile("ccw.xml", null, gotFileEntry, fail`); 

Попробуйте сделать это, а также полезно для добавления сообщений журнала консоли поэтому его проще для вас, чтобы отладить и понять, что происходит и в каком порядке.

Смежные вопросы