2012-04-09 13 views
0

Ich muss XML-Protokolldatei in Adobe Air erstellen. Mein erster Gedanke war, eine Art automatisierter Serialisierung zu verwenden. Und ich habe die FlexXB-Bibliothek gefunden. Ich habe einfach Logger erstellt und markiert die Klasse mit Anmerkungen in der folgenden Art und WeiseBenötigen Sie Hilfe beim Erstellen von XML-Protokoll in Adobe Air

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; 

      } 

} 

Ich versuche, das einzelne Objekt zu serialisiert:

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()); 

    } 
} 

Nun Serialisierung erzeugt einen Fehler: Typeerror : Fehler # 1009: Zugriff auf eine Eigenschaft oder Methode eines Nullobjektverweises nicht möglich. bei com.googlecode.flexxb.core :: SerializationCore/serialize()

Sicher, ich alle Objekte in der Sammlung serialisiert werden können one-by-one, aber ich halte, dass dies eine schlechte Idee ist. Hier

Antwort