如何使用JavaScript的FileReader读取XML文件?

3

我需要从ODF文件中获取XML。我尝试使用FileReader的readAsText和readAsBinaryString方法,但是它们都不能正常工作。

FileReader的readAsText方法对于odf文件返回一些特殊字符。

使用readAsBinaryString方法

var reader = new FileReader()

reader.onloadend=function(e){

    var data = e.target.result;
    //data is not in xml format
    var xml = str2xml(data);
    //getting error
    /*
     using DOM parser for xml parsing
    */
}

reader.readAsBinaryString(file);

如何使用JavaScript FileReader从ODF文件中获取XML?

尝试以二进制方式读取,然后解析内容以获取XML。 - Arun
2个回答

6

这是一个基于浏览器的例子,但是其它 JavaScript 上下文中也应该适用:

制作表单:

<div id="upload">
    <h2>Gimme Yo ODF Cornbread</h2>
    <form enctype="multipart/form-data" method="post">
        <input type="file" name="odfxml" id="odfxml" />
    </form>
</div>

处理上传:(为了简洁和简单起见,我使用JQuery)

<script>
    $("#odfxml").change(function(){
        var file = document.getElementById("odfxml").files[0];
                    //You could insert a check here to ensure proper file type
        var reader = new FileReader();
        reader.readAsText(file);
        reader.onloadend = function(){
            var xmlData = $(reader.result);
        };
    });
</script>

变量xmldata包含您的XML数据,可以直接使用。

2

使用类似文本的响应:

var xml = data.replace(/[\s\S]+<\?xml/, '<?xml');
xml = xml.replace(/office:document\-meta>[\s\S]+/, 'office:document-meta>');

如果您需要像jQuery对象一样加载XML:

xml = $(xml);

然后您可以使用jQuery选择器的on方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接