2014-01-23 43 views
0

我在做这个项目,需要我来处理客户端上的XML文件的XML文件。 这是情景: 用户得到上传一个XML文件,XML文件的结构应该在这一点上读和表需要根据XML文件中的信息来填充。我没有创建表并填充它的问题,但是我想知道的是我可以在将XML文件上传到服务器之前处理它吗?的JavaScript - 上传和阅读客户端

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中,将是空的......

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文件到服务器?

DOMParse需要的文件路径打开:

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

有没有办法使用的FileReader读取该文件,并通过实际的文件,而不是到xhttp.open路径?

+0

['FileReader'](https://developer.mozilla.org/en-US/docs/Web/API/FileReader)来读取该文件,['DomParser'](HTTPS://显影剂.mozilla.org/en-US/docs/Web/API/DOMParser)来解析XML。 –

+0

我看着FileReader,但我不知道如何使用FileReader返回文件。在某些时候,需要的DOMParser要打开的文件,所以我应该提供一个paramater: xhttp.open(“GET”,把“books.xml”,假); –

回答

1

这只会在HTML5兼容的浏览器工作:

  1. 使用的FileReader得到文件数据

  2. 使用的DOMParser的文件解析为一个字符串:

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

所以fileAsString将文件的内容作为字符串?如果字符串太大会怎么样?我很确定我的项目中的XML文件将包含大量信息。内容大小是否会造成任何问题? –

+0

@ Ali.B'fileAsString'是你在ajax调用中创建和填充数据的东西。对尺寸没有标准的限制,但它会受到浏览器可用RAM以及CPU和JavaScript速度的限制。 –