私はChorome21でHTML5FileAPIを使用して、「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を「クリア」する必要があるようです...何かアイデアはありますか?どうも!!