Xml Adobe Air-FileMode.APPEND

Xml Adobe Air-FileMode.APPEND,xml,air,Xml,Air,我正在使用下面的代码将图像id添加到.XML文件中: var xmlGallery:XML =new XML ('<ENTRY "IMG_ID="' +img_id+'"/>') var fGallery:File = File.applicationStorageDirectory.resolvePath("gallery.xml"); var sGallery:FileStream = new FileStream(); sGallery.open(fGallery,File

我正在使用下面的代码将图像id添加到.XML文件中:

var xmlGallery:XML =new XML ('<ENTRY "IMG_ID="' +img_id+'"/>')

var fGallery:File = File.applicationStorageDirectory.resolvePath("gallery.xml");
var sGallery:FileStream = new FileStream();

sGallery.open(fGallery,FileMode.APPEND);
sGallery.writeUTFBytes(xmlGallery.toXMLString());
.XML输出如下所示:

<ENTRY "IMG_ID="1"/> 
<ENTRY "IMG_ID="2"/>
<ENTRY "IMG_ID="3"/>
我需要添加上面的条目。 怎么做


谢谢。Uli

为什么不在将任何XML节点附加到文件之前编写字符串呢?尝试:

sGallery.open(fGallery, FileMode.APPEND);
sGallery.writeUTF("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sGallery.writeUTFBytes(xmlGallery.toXMLString());
更新:根据OP的意见,问题陈述发生变化:

不看源代码很难说。我能理解的是,您正在多次更新同一个XML文件。在这种情况下,您的最佳选择是执行以下操作:

检查文件是否存在, 如果没有创建,则添加XML声明和库打开和关闭标记,即库元素 如果它真的存在,什么也不做 在XML类型的对象中读入文件 使用E4X将所有子元素添加到此对象,这是AS3中推荐的XML处理方式 添加/修改完XML对象后,将其保存回文件
您还应该看看asx3m XML序列化库。

很抱歉,这不起作用。这是每个条目添加编码的结果:@Uli:Aha!我猜您正在多次打开该文件并向其添加条目?如果是这种情况,请在开始处理图像数据或其他任何内容之前打开该文件一次,编写XML文档声明,关闭它,然后继续追加。好的,我是这样做的:sGallery.openAsyncfGallery,flash.filesystem.FileMode.UPDATE;sGallery.writeUTFBytes;sGallery.openAsyncfGallery,flash.filesystem.FileMode.APPEND;sGallery.writeUTFBytesxmlGallery.toXMLString;也许这对某人有帮助。我用了更新而不是写。只是遇到了另一个问题。在我的例子中,如何向XML中添加结束元素以使其有效?例如:@Uli:完成所有条目对象的追加后,再次打开文件,追加字符串并关闭它。