2.XML-file auslesen mit Flash
zunächst müsen wir ein neues XML-Objekt erstellen worin die ganzen XML-functionen ablaufen werden!
das machen wir mit
ActionScript:
var XMLdaten = New XML();//erstellt ein neues XML Objekt
dann teilen wir dem Objekt mit, dass es die leerzeichen(spaces) in der file ignorieren soll (sonst hätten wir alles aneineander schreiben müssen->unübersichtlich)
ActionScript:
XMLdaten.ignoreWhite=true; // ignoriert die leerRäume (spaces) inder XML-file
dann müssen wir die Datei in das objekt laden:
ActionScript:
XMLdaten.load("XMLfile.xml");//lädt die XML-file
hier gibt man natürlich die Datei an, die man vorher abgespeichert hat!
wenn nun die Daten geladen werden müssen wir darauf reagieren um sie auszulesen:
ActionScript:
XMLdaten.onLoad = function(success) {...}//wenn die Datei geladen wird
//das success benötigen wir um zu prüfen ob das laden erfolgreich war!
dann erstellen wir uns zwei arrays (so viele wie wir in der XML fiel attribute für die childNodes haben)
in diese schrieben wir gleich die ausgelesenen Daten!
ActionScript:
XMLdaten_namen = []; // Erstellt ein neues Array namens XMLdaten_namen
XMLdaten_beschreibung = []; // Erstellt ein neues Array namens XMLdaten_beschreibung
nun gucken wir ob das laden erfolgreich war
ActionScript:
if (success) { ...}//wenn das laden der File erfolgreich war
wenn es das war dann gehen wir alle elemente der Datei in einer for schleife durch:
ActionScript:
for (var i=0; i<XMLdaten.firstChild.childNodes.length; i++) {...}
//damit man nicht verwirrt ist:
//XMLdaten.firstChild.childNodes == XMLdaten.childNodes[0].childNodes
//erstes element in der XML file soll ausgelesen werden.. und zwar alle
//elementedie sich in dem ersten childNode befinden (childNodes[0])
//diesen bezeichnet man auch als firstChild
//was auch geht firstChild.firstChild.firstChild...usw.. das können wir hier aber
//nicht gebrauchen!
//.length gibt die Anzahl an Elementen im childNode wieder!
nun beginnt das eigentliche Auslesen!
mit
ActionScript:
XMLdaten.firstChild.childNodes[i]
greifen wir auf das (in der for schleife) aktuelle Element zu!
(noch mal an den aufbau der file erinnern u ggf. noch mal oben nachlesen!)
um ein attribut eines Elements auszulesen benötigen wir die eigenschaft ".attributes."
wir lesen das Attribut aus und schreiben es uns in unser Array!
ActionScript:
XMLdaten_namen[i] = XMLdaten.firstChild.childNodes[i].attributes.name; //namen Attribut
//des aktuellen Elements auslesen und ins XMLdaten_namen
//array schreiben
XMLdaten.firstChild.childNodes[i].attributes.beschreibung; //beschreibungs Attribut
//des aktuellen Elements auslesen und ins XMLdaten_beschreibung
//array schreiben
das machen wir solange bis wir unser Array mit allen daten gefüllt haben (dank der for-schleife)
wenn das alles geschehen ist sind die daten bereit und wir gehen weiter im Film um dann die Daten zu verarbeiten/weiter zu verwenden
(man könnte das ganze auch in einer Frame machen! aber ich denke es ist so erst einmal leichter zu überblicken wann was geschieht

)
ActionScript:
//das auslesen ist nun abgeschlossen, da die for schleife beendet ist!
//also gehen wir weiter im Film zum verarbeiten der XML-dateien
gotoAndStop(2);
Das vollständige "auslese" script sieht demnach so aus:
ActionScript:
stop();//in Frame (1) stehen bleiben
var XMLdaten = new XML();//erstellt ein neues XML Objekt
XMLdaten.ignoreWhite=true; // ignoriert die leerRäume (spaces) inder XML-file
XMLdaten.load("XMLfile.xml");//lädt die XML-file
XMLdaten.onLoad = function(success) {//wenn die Datei geladen wird
XMLdaten_namen = []; // Erstellt ein neues Array namens XMLdaten_namen,
//hier speichern wir die Variablen wo name="..."steht
XMLdaten_beschreibung = []; // Erstellt ein neues Array namens XMLdaten_beschreibung,
//hier speichern wir die Variablen wo beschreibung="..."steht
if (success) { //wenn das laden der File erfolgreich war
for (var i=0; i<XMLdaten.firstChild.childNodes.length; i++) {//for schleife-> für
//alle elemente die firstChild (childNode[0]) besitzt...
XMLdaten_namen[i] = XMLdaten.firstChild.childNodes[i].attributes.name; //namen Attribut
//des aktuellen Elements auslesen und ins XMLdaten_namen
//array schreiben
XMLdaten_beschreibung[i] = XMLdaten.firstChild.childNodes[i].attributes.beschreibung;
//beschreibungs Attribut
//des aktuellen Elements auslesen und ins XMLdaten_beschreibung
//array schreiben
}
//das auslesen ist nun abgeschlossen, da die for schleife beendet ist!
//also gehen wir weiter im Film zum verarbeiten der XML-dateien
gotoAndStop(2);
}
}
bis später!
mit freundlichen Grüßen,
Robert
P.s:
bei Fragen natürlich einfach fragen!
ich erkläre nicht verstandenes gerne noch mal genauer!
p.p.s danke @ salzar für weiter unten von ihm genannte bessere Möglichkeit die daten auszulesen bzw. das script etwas zu optimieren! thx!
habe die dateien und die scripts aktuallisiert!