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