2012-04-09 62 views
0

我需要在Adobe Air中創建XML日誌文件。我的第一個想法是使用某種自動化的序列化。我找到了FlexXB庫。我創建了簡單的記錄並標記通過以下方式在Adobe Air中創建XML日誌需要一些幫助

package loggingTools 
{ 

    [XmlClass] 
    [ConstructorArg(reference="timeStamp")] 
    [ConstructorArg(reference="item")] 
    [ConstructorArg(reference="action")] 
    [ConstructorArg(reference="arguments")] 
    [ConstructorArg(reference="success")] 
    [Bindable] 
    public class MessageAction 
    { 
    [XmlAttribute()] 
    public var timeStamp:Date; 

      [XmlAttribute()] 
      public var item:String; 

      [XmlAttribute()] 
      public var action:String; 

      [XmlAttribute()] 
      public var arguments:String; 

      [XmlAttribute()] 
      public var success:Boolean; 

      public function MessageAction(timeStamp:Date, item:String, action:String, arguments:String, success:Boolean) { 
        this.timeStamp = timeStamp; 
        this.item = item; 
        this.action = action; 
        this.arguments = arguments; 
        this.success = success; 

      } 

} 

我試圖序列化一個對象與註釋類:

public class PlainXMLLogger 
{ 
    //private static var isStarted:Boolean; 

    private var logFile:XML; 

      [XmlArray(alias = "Log", type="loggingTools.MessageAction")] 
      [ArrayElementType("loggingTools.MessageAction")] 
    public var messages:Array; 

    public function addMessageAction(item:String, action:String, arguments:String, success:Boolean):void { 
     var newMessageAction:MessageAction; 
     newMessageAction = new MessageAction(new Date(), item, action, arguments, success); 
     messages.push(newMessageAction); 

    } 

public function close():void { 

     var logXML:XML = FlexXBEngine.instance.serialize(messages); 

     trace(">> XML LOG "); 
     trace(logXML.toString()); 

    } 
} 

現在,系列化產生一個錯誤: 類型錯誤:錯誤#1009:無法訪問空對象引用的屬性或方法。 在com.googlecode.flexxb.core :: SerializationCore /序列化()

當然,我可以序列中的所有物件收集一個接一個,但我認爲,這是一個壞主意。

回答