Einzelnen Beitrag anzeigen
Alt 14-08-2004, 01:12   #3 (permalink)
pape
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
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:
  1. var XMLdaten = New XML();//erstellt ein neues XML Objekt
  2.  
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:
  1. XMLdaten.ignoreWhite=true; // ignoriert die leerRäume (spaces) inder XML-file
  2.  
dann müssen wir die Datei in das objekt laden:
ActionScript:
  1. XMLdaten.load("XMLfile.xml");//lädt die XML-file
  2.  
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:
  1. XMLdaten.onLoad = function(success) {...}//wenn die Datei geladen wird
  2. //das success benötigen wir um zu prüfen ob das laden erfolgreich war!
  3.  
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:
  1. XMLdaten_namen = []; // Erstellt ein neues Array namens XMLdaten_namen
  2. XMLdaten_beschreibung = []; // Erstellt ein neues Array namens XMLdaten_beschreibung
  3.  
nun gucken wir ob das laden erfolgreich war
ActionScript:
  1. if (success) { ...}//wenn das laden der File erfolgreich war
  2.  
wenn es das war dann gehen wir alle elemente der Datei in einer for schleife durch:
ActionScript:
  1. for (var i=0; i<XMLdaten.firstChild.childNodes.length; i++) {...}
  2. //damit man nicht verwirrt ist:
  3. //XMLdaten.firstChild.childNodes == XMLdaten.childNodes[0].childNodes
  4. //erstes element in der XML file soll ausgelesen werden.. und zwar alle
  5. //elementedie sich in dem ersten childNode befinden (childNodes[0])
  6. //diesen bezeichnet man auch als firstChild
  7. //was auch geht firstChild.firstChild.firstChild...usw.. das können wir hier aber
  8. //nicht gebrauchen!
  9. //.length gibt die Anzahl an Elementen im childNode wieder!
  10.  
nun beginnt das eigentliche Auslesen!

mit
ActionScript:
  1. 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:
  1. XMLdaten_namen[i] = XMLdaten.firstChild.childNodes[i].attributes.name; //namen Attribut
  2. //des aktuellen Elements auslesen und ins XMLdaten_namen
  3. //array schreiben
  4. XMLdaten.firstChild.childNodes[i].attributes.beschreibung; //beschreibungs Attribut
  5. //des aktuellen Elements auslesen und ins XMLdaten_beschreibung
  6. //array schreiben
  7.  
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:
  1. //das auslesen ist nun abgeschlossen, da die for schleife beendet ist!
  2. //also gehen wir weiter im Film zum verarbeiten der XML-dateien
  3. gotoAndStop(2);


Das vollständige "auslese" script sieht demnach so aus:
ActionScript:
  1. stop();//in Frame (1) stehen bleiben
  2. var XMLdaten = new XML();//erstellt ein neues XML Objekt
  3. XMLdaten.ignoreWhite=true; // ignoriert die leerRäume (spaces) inder XML-file
  4. XMLdaten.load("XMLfile.xml");//lädt die XML-file
  5. XMLdaten.onLoad = function(success) {//wenn die Datei geladen wird
  6.     XMLdaten_namen = []; // Erstellt ein neues Array namens XMLdaten_namen,
  7.                         //hier speichern wir die Variablen wo name="..."steht
  8.     XMLdaten_beschreibung = []; // Erstellt ein neues Array namens XMLdaten_beschreibung,
  9.                         //hier speichern wir die Variablen wo beschreibung="..."steht
  10.     if (success) { //wenn das laden der File erfolgreich war
  11.         for (var i=0; i<XMLdaten.firstChild.childNodes.length; i++) {//for schleife-> für
  12.                                     //alle elemente die firstChild (childNode[0]) besitzt...
  13.             XMLdaten_namen[i] = XMLdaten.firstChild.childNodes[i].attributes.name; //namen Attribut
  14.                                         //des aktuellen Elements auslesen und ins XMLdaten_namen
  15.                                         //array schreiben
  16.             XMLdaten_beschreibung[i] = XMLdaten.firstChild.childNodes[i].attributes.beschreibung;
  17.                       //beschreibungs Attribut
  18.                       //des aktuellen Elements auslesen und ins XMLdaten_beschreibung
  19.                       //array schreiben
  20.         }
  21.         //das auslesen ist nun abgeschlossen, da die for schleife beendet ist!
  22.         //also gehen wir weiter im Film zum verarbeiten der XML-dateien
  23.         gotoAndStop(2);
  24.     }
  25. }

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!
Angehängte Dateien
Dateityp: zip xmlbsp_schritt2.zip (2,8 KB, 2527x aufgerufen)

Geändert von shorty (08-06-2006 um 23:29 Uhr)
pape ist offline   Mit Zitat antworten