我使用带Chorome 21的HTML5 FileAPI来创建,读取和修改“users.xml”文件,第一次读取和修改xml代码时,一切正常,但在第一次之后,阅读器没有正确读取xml,看起来像freader(我的FileReader var object)保留了以前的结果,并搞乱了新的读取操作。原始的XML:HTML5 FileReader读取和修改XML问题
<?xml version='1.0' encoding='utf-8'?><users></users>
我的代码读取并添加一个新的子节点:
fs.root.getFile('users.xml', {}, function(fileEntry) {
fileEntry.file(function(file) {
var freader = new FileReader();
freader.onloadend = function(theFile) {
console.log("before: " + this.result);
var strcontent = this.result;
fileEntry.createWriter(function(fileWriter) {
var parsed = new DOMParser().parseFromString(strcontent, "text/xml");
var users= parsed.getElementsByTagName("users")[0];
var user = parsed.createElement("user");
user.setAttribute('id',txt_rfc.value);
var name = parsed.createElement("name");
var textname = parsed.createTextNode(txt_name.value);
name .appendChild(textname);
user.appendChild(name);
users.appendChild(user);
var serializer = new XMLSerializer();
var str = serializer.serializeToString(parsed);
console.log("after: " + str);
var bb = new Blob([str],{type:'charset=utf-8'});
fileWriter.write(bb);
}, errorHandler);
};
freader.readAsText(file);
}, errorHandler);
}, errorHandler);
}
第一次执行读取并正确写入这样的XML:
<?xml version="1.0" encoding="utf-8"?><users><user id="1"><name>John</name></user></users>
但下一次执行FileReader显示这样的读取结果(这是不正确的,我s错误):
<?xml version='1.0' encoding='utf-8'?><users/>ser id="1"><name>John</name></user></users>
之后,我的代码无法继续写入,因为xml读取结果“损坏”。看起来像FileReader需要“清除”或什么....任何想法?谢谢!!
thx为您提供帮助,几个小时前我想通了。无论如何,我会再次发布答案,thx :) – gekko