2014-01-23 6 views
0

클라이언트 측에서 XML 파일을 처리해야하는이 프로젝트에서 작업 중입니다. 이것은 시나리오입니다. 사용자가 XML 파일을 업로드하면이 시점에서 XML 파일의 구조를 읽고 XML 파일의 정보를 기반으로 테이블을 채워야합니다. 테이블을 생성하고 데이터를 채우는 데 문제가 없지만 서버에 업로드하기 전에 XML 파일을 처리 할 수 ​​있습니까?JavaScript - 클라이언트 측에서 XML 파일 업로드 및 읽기

function parseXML(xml_file){ 
     if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else {// code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     //xmlhttp.open("GET", "books.xml", false); 
     xmlhttp.open("GET",xml_file , false); 
     xmlhttp.send(); 
     xmlDoc = xmlhttp.responseXML; 
     alert(xmlDoc); 
    } 

내가 파일을 처리 한 후 위의 코드를 사용하는 경우, 해당 xmldoc가 null이 될 것입니다 ...

function handleFileSelect(evt) { 
    // FileList object 
     var files = evt.target.files; 
    //var contents = evt.target.result; 
    //alert(contents); 
    parseXML(files[0]); 


    // files is a FileList of File objects. List some properties. 
    var output = []; 
    for (var i = 0, f; f = files[i]; i++) { 
     output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ', f.size, ' bytes, last modified: ', f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a', '</li>'); 
    } 
    document.getElementById('file_list').innerHTML = '<ul>' + output.join('') + '</ul>'; 
} 

이 할 수있는 방법이 있나요? 물론 PHP로 이것을 할 수 있습니다 ... 파일을 서버에 업로드하고 페이지를 새로 고치고 최근에 업로드 한 파일을 읽는 JavaScript를 사용하십시오. 그러나 XML 파일을 서버에 업로드하지 않고도이를 수행 할 수있는 방법이 있습니까?

xhttp.open("GET","books.xml",false) 

실제 파일을 FileReader를 사용하여 파일을 읽고 전달하는 방법 대신에 xhttp.open 할 수있는 경로가 있습니까 :

DOMParse 열려면 파일 경로를 필요로?

+0

['FileReader'] (https://developer.mozilla.org/en-US/docs/Web/API/FileReader) 파일을 읽으려면 ['DomParser'] (https : //로 개발 .mozilla.org/ko-US/docs/Web/API/DOMParser)를 사용하여 XML을 구문 분석합니다. –

+0

FileReader를 보았지만 FileReader로 파일을 반환하는 방법을 잘 모르겠습니다. 어떤 시점에서 DOMParser는 파일을 열어야하므로 매개 변수로 무엇을 제공해야합니까? xhttp.open ("GET", "books.xml", false); –

답변

1

에만 HTML5 호환 브라우저에서 작동합니다

  1. 사용을 FileReader는 문자열로 파일을 구문 분석하는 파일 데이터

  2. 사용 DOMParser를 얻을 수 :

합니다.

var parser = new DOMParser(); 
var doc = parser.parseFromString(fileAsString, "application/xml"); 
+0

그래서 fileAsString은 파일의 내용을 문자열로 가질 것인가? 문자열이 너무 큰 경우 어떻게해야합니까? 나는 내 프로젝트의 XML 파일에 많은 정보가 포함될 것이라고 확신한다. 콘텐츠 크기가 문제를 일으킬 수 있습니까? –

+0

@ Ali.B'fileAsString'은 작성하고 아약스 호출의 데이터로 "채우기"합니다. 크기에는 표준 제한이 없지만 브라우저에서 사용할 수있는 RAM뿐 아니라 CPU 및 JavaScript 속도에 따라 제한됩니다. –

관련 문제