Adobe Air - FileMode.APPEND

时间:2012-05-18 17:32:48

标签: 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,FileMode.APPEND);
sGallery.writeUTFBytes(xmlGallery.toXMLString());

.XML输出如下所示:

<ENTRY "IMG_ID="1"/> 
<ENTRY "IMG_ID="2"/>
<ENTRY "IMG_ID="3"/>

我需要在条目上方添加<?xml version="1.0" encoding="utf-8"?>。 怎么做?

感谢。乌利

1 个答案:

答案 0 :(得分:0)

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

sGallery.open(fGallery, FileMode.APPEND);
sGallery.writeUTF("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sGallery.writeUTFBytes(xmlGallery.toXMLString());

更新:根据OP的评论更改问题陈述:

如果不查看源代码,很难说。我能理解的是你多次更新同一个XML文件。在这种情况下,最好的办法是做到以下几点:

  • 检查文件是否存在,
    • 如果没有创建一个并添加XML声明和GALLERY开始和结束标记(即GALLERY元素)
    • 如果确实存在则无所事事
  • XML
  • 类型的对象中读入文件
  • 使用E4X(AS3中推荐的XML处理方式)将所有子元素添加到此对象
  • 完成添加/修改XML对象后,将其保存回文件

您还应该查看asx3m XML序列化库here