2013-03-14 1 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 파싱 코드입니다. 나는 phonegap 레퍼런스를 따른다. 내 filereader는 stateReady를 변경하지 않습니다. 그게 항상 상태 0입니다. 제발 도와주세요. filereader.result 메서드가 phonegap에서 작동하지 않습니까? 나는 집에 가고 싶다. 바로이 라인으로 라인을 변경 :-(.I 항상Phonegap, ios 파일 판독기가 작동하지 않습니다.

+0

는 OnDeviceReady 응용 프로그램에 의해 호출? OnDeviceReady 이벤트에 간단한 경고를 넣어 테스트 할 수 있습니다. – Whizkid747

답변

0

글쎄, 당신은 아마 이미 그것을 해결.이 게시물을 볼 수 있지만 다른 사람에 대한 유용한 경우에, 당신의 콜백이 제대로 체인되지 않습니다

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

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

디버그에 당신을 위해 더 쉬운 있도록 콘솔 로그 메시지를 추가하고 어떻게 어떤 순서로 이해하는 것을 시도하고 또한 도움이된다.