我正在使用带有 Chorome 21 的 HTML5 FileAPI 来创建、读取和修改“users.xml”文件,第一次代码读取和修改 xml 时一切正常,但在第一次之后,阅读器不读取xml 正确,似乎 freader (我的 FileReader var 对象)保留了以前的结果并弄乱了新的读取操作。原始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 显示的是这样的读取结果(这是不正确的并且是错误的):
<?xml version='1.0' encoding='utf-8'?><users/>ser id="1"><name>John</name></user></users>
之后我的代码无法继续写入,因为 xml 读取结果“已损坏”。看起来 FileReader 需要“清除”或其他东西....有什么想法吗?谢谢!!