XML Daten (Knoten) in MC Laden

filigrani

Mitglied
Hallo,

ich habe auf der Bühne einen MC in den ich mehrere bestimmten XML-Knoten ausgeben möchte.

der MC auf der Bühne heisst automaten_mc:

PHP:
var aktuelle_nummer = 0;



var automatenanzeige:MovieClip = new MovieClip ();
this.addChild(automatenanzeige);
automatenanzeige.name = "automaten_mc";
automatenanzeige.x=438;
automatenanzeige.y=463;




    var automaten = [];

	var loader:URLLoader = new URLLoader();
	loader.load(new URLRequest("transitions_V6.xml"));
	loader.addEventListener(Event.COMPLETE, parseXML);

	function parseXML(ev) {
        var xml_dokument:XML = new XML(ev.target.data);
		xml_dokument.ignoreWhitespace = true;
			
		for (var i:int = 0; i < xml_dokument.statemachine.length(); i++) {
			trace("Lade Automat mit der ID " + xml_dokument.statemachine[i].@id);
			var statemachine = new Object();
      		statemachine.element = xml_dokument.statemachine[i].Elements.text();
		automaten[automaten.length] = statemachine;
		}
		
		
	}
	
	function ladeAutomaten(nr:int) {
		if (nr > 0 && nr <= automaten.length) {
          var loader:Loader = new Loader();
          loader.load(new URLRequest(automaten[nr - 1].statemachine));
		  while (automatenanzeige.numChildren > 0) {
            automatenanzeige.removeChildAt(0);
		  }
		  automatenanzeige.addChild(loader);
		  automaten_mc.text= automaten[nr - 1].statemachine;
		  
  		  aktuelle_nummer = nr; 
		}
	}

Das dazugehörige XML-File sieht so aus:

PHP:
<body>


<statemachine id="1">Transitions for state machine 1



<Elements>
 0
</Elements>





<statemachine id="01">das ist Maschine 01


<Elements>
 1






<Timestamp>
wert
</Timestamp>


<x>
wert
</x>


<Trans>
 53
</Trans>
</Elements>


</statemachine>
<statemachine>..</statemachine>

Was ich möchste ist nur den Knoten Namens <statemachine> in das MC Feld laden.
Diese sollen dann untereinander in dem MC geladen werden.

Den Trace gibt er mir richtig aus, nur leider lädt er die Daten nicht in den MC.

Wär für jede Hilfe dankbar.
 
Hallo,

müsste es nicht statt
Code:
loader.load(new URLRequest(automaten[nr - 1].statemachine));

so heissen?

Code:
loader.load(new URLRequest(automaten[nr - 1].statemachine.element));

Drei Tips:

1.
XML-Objekte kannst du viel angenehmer iterieren:
Code:
var xm: XML;
var item: XML;

for each (item in xm.statemachine) {
    //Anweisungen
}

2.
Wenn du einem Array ein weiteres Element hinzufügen möchtest, verwendest du mit Vorteil die Methode push():
Code:
 automaten.push(statemachine);


3.
Ein neues Objekt kann man ähnlich wie bei Arrays statt mit dem Standard-Konstruktor mit folgendem Ausdruck instanzieren:
Code:
var statemachine:Object = {};
Zudem kannst du die Eigenschaft elements auch gleich da abhandeln:
Code:
var statemachine:Object = {
        element: xm.item.Elements.text()
};
Weitere Zuweisungen trennst du mit Komma ab.

Gruss
 
Zuletzt bearbeitet:
Hallo,

mein Fehler:
Code:
automaten[nr-1].elements;
Frag mich trotzdem, was es da überhaupt zu laden gibt, ist nirgends ein Filename angegeben...

Gruss
 
Ja, ich lade doch die lokale Datei hier:

PHP:
    loader.load(new URLRequest("transitions_V6.xml"));

Komisch. Hab den Code angepasst, trotzdem werden die Daten nicht in den MC ausgegeben.

Tip?
 
Hallo,

dieser Aufruf wird wohl schon ok sein, aber der Lade-Aufruf in der "ladeAutomaten"-Funktion, was soll der laden?

Gruss
 
Hallo,
Es soll der Inhalt des Xml-Knotens <statemachine> ausgegeben werden.
Der soll in den MC gelesen werden.
Es lädt im Moment aber nichts.

Gruß
 
Zurück