Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-08-2008, 19:08   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 118
Verzweiflung! Endlosschleife bei XML auslesen und in mehrdim Array schreiben...

Hey Leute!

Wo verdammt nochmal ist der Fehler???

XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<fragen>
<frage>
<name>In welchem Jahr wurde xxx gegründet?</name>
<antwort>Frage 2 Antwort 1</antwort>
<antwort>Frage 2 Antwort 2</antwort>
<antwort>Frage 2 Antwort 3</antwort>
<antwort>Frage 2 Antwort 4</antwort>
<hinweis>Keine Mehrfachauswahl möglich.</hinweis>
</frage>

<frage>
<name>In welchem Jahr wurde yyy gegründet?</name>
<antwort>Frage 2 Antwort 1</antwort>
<antwort>Frage 2 Antwort 2</antwort>
<antwort>Frage 2 Antwort 3</antwort>
<antwort>Frage 2 Antwort 4</antwort>
<hinweis>Keine Mehrfachauswahl möglich.</hinweis>
</frage>

</fragen>



AS3 Code

var wissensabfrage_frage_name_array:Array = new Array();

// Hauptschleife
for (var i:Number=0; i<wissensabfrage_details_xml.frage.length(); i++) {

wissensabfrage_frage_name_array[i] = new Array();
wissensabfrage_frage_name_array[i] = wissensabfrage_details_xml.frage[i].name;


// Unterschleife
for (var k:Number=0; k<wissensabfrage_details_xml.frage[i].antwort.length(); k++) {

wissensabfrage_frage_name_array[i][k] = wissensabfrage_details_xml.frage[i].antwort[k];

} // Unterschleife Ende

} // Hauptschleife Ende





... Ergebnis.... Absturz! Hat jemand ne idee?

Geändert von m.franz (15-08-2008 um 19:09 Uhr)
m.franz ist offline   Mit Zitat antworten
Alt 15-08-2008, 19:37   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Bei der neuen XML Klasse brauchst/solltest du nicht in ein Array zu referenzieren.
Omega Psi ist offline   Mit Zitat antworten
Alt 15-08-2008, 19:40   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 118
Das musst du mir näher erklären
m.franz ist offline   Mit Zitat antworten
Alt 15-08-2008, 19:52   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
ActionScript:
  1. package {
  2.     import flash.display.Sprite;
  3.  
  4.     public class XMLYo extends Sprite {
  5.  
  6.         private var _questions:XML =
  7.                                     <questions>
  8.                                         <question multiplChoice="false" questionId="01">
  9.                                             <text>In welchem Jahr wurde xxx gegründet?</text>
  10.                                             <answer>Antwort 1</answer>
  11.                                             <answer>Antwort 2</answer>
  12.                                             <answer>Antwort 3</answer>
  13.                                             <answer>Antwort 4</answer>
  14.                                         </question>
  15.                                         <question multiplChoice="false" questionId="02">
  16.                                             <text>In welchem Jahr wurde yyy gegründet?</text>
  17.                                             <answer>Antwort 1</answer>
  18.                                             <answer>Antwort 2</answer>
  19.                                             <answer>Antwort 3</answer>
  20.                                             <answer>Antwort 4</answer>
  21.                                         </question>
  22.                                     </questions>
  23.  
  24.         public function XMLYo() {
  25.             trace(this._questions.children().(@questionId == "01").text);
  26.         }
  27.     }
  28. }
So als Beispiel.
Omega Psi ist offline   Mit Zitat antworten
Alt 15-08-2008, 19:59   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 118
Sorry... Ich hab vergessen zu erwähnen, dass ich die XML über PHP lade...
Ich möchte bevor ich mit dem Wissenstest starte alle Fragen mit den dazugehörigen Antworten einmal auslesen und in das entsprechende mehrdimensionale Array schreiben... Dieses dient dann später wieder als
Grundlage für den Aufbau des Frangen / Antwort Kathaloges in Flash....

Ich hab jetzt nur Auszüge aus dem Skript aufgeführt... Der entsprechende
Loader ist natürlich auch dabei. Ich frag mich halt echt nur warum der sich immer in ner Endlosschleife aufhängt....
m.franz ist offline   Mit Zitat antworten
Alt 15-08-2008, 20:18   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
ActionScript:
  1. package {
  2.  
  3.     import flash.display.Sprite;
  4.     import flash.events.Event;
  5.     import flash.net.URLLoader;
  6.     import flash.net.URLRequest;
  7.  
  8.     public class XMLYo extends Sprite {
  9.  
  10.         private var _questions:XML;
  11.  
  12.         public function XMLYo() {
  13.             var urlLoader:URLLoader = new URLLoader();
  14.             urlLoader.addEventListener(Event.COMPLETE, eventListener, false, 0, true);
  15.             urlLoader.load(new URLRequest("data.xml"));
  16.         }
  17.        
  18.         private function eventListener(event:Event):void {
  19.             switch(event.type) {
  20.                 case Event.COMPLETE:
  21.                     this._questions = XML(event.target.data);
  22.                     trace(this._questions.children().(@questionId == "01").text);
  23.                     break;
  24.             }
  25.         }
  26.     }
  27. }
Zitat:
<questions>
<question multiplChoice="false" questionId="01">
<text>In welchem Jahr wurde xxx gegründet?</text>
<answer>Antwort 1</answer>
<answer>Antwort 2</answer>
<answer>Antwort 3</answer>
<answer>Antwort 4</answer>
</question>
<question multiplChoice="false" questionId="02">
<text>In welchem Jahr wurde yyy gegründet?</text>
<answer>Antwort 1</answer>
<answer>Antwort 2</answer>
<answer>Antwort 3</answer>
<answer>Antwort 4</answer>
</question>
</questions>
Omega Psi ist offline   Mit Zitat antworten
Alt 15-08-2008, 20:30   #7 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 118
Das sieht schon gut aus... ist auch der richtige Weg... Nur auch in deiner Version müsste ich wenn ich alle Fragen laden will irgendwie ne schleife drum packen... Hast du nicht vielleicht ne idee wie ich mit meiner Array Variante noch was rausholen könnte?
m.franz ist offline   Mit Zitat antworten
Alt 15-08-2008, 20:33   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Ne, weil es wie gesagt keinen Sinn macht. Was willst du denn mit dem Array erreichen?
Omega Psi ist offline   Mit Zitat antworten
Alt 15-08-2008, 20:42   #9 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 118
Alles immer griffbereit gespeichert zu haben ohne immer gleich auf die XML zugreifen zu müssen. Einmal auslesen... fertig. Danach kann ich mit Hilfe der Arrays schön Pflegeleicht meine Templates befüllen.... Vielleicht hab ich da sowas wie nen Array Fetisch :-)
m.franz ist offline   Mit Zitat antworten
Alt 15-08-2008, 20:52   #10 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Also, das brauchst du nicht zu machen, da du im Array auch nur auf XML Objekte referenzierst. Mehr Sinn würden eigene Klassen machen. Aber so macht es keinen Unterschied.

Ob du nun array[0][1] oder xml.*[0].*[1] schreibst.
Omega Psi ist offline   Mit Zitat antworten
Alt 15-08-2008, 20:56   #11 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Und sonst:
ActionScript:
  1. var array:Array = new Array();
  2. var xml:XML = new XML();
  3.  
  4. // Set the xml's children.
  5.  
  6. for each (var child:XML in xml.children()) {
  7.     this.array.push(child);
  8. }
Omega Psi ist offline   Mit Zitat antworten
Alt 15-08-2008, 21:16   #12 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 118
Die Frage ist jetzt aber....
Mit this.array.push..... Schreibe ich halt alle Einträge der entsprechenden
id in einen Array... Ich brauche aber eine klare Trennung zwischen dem Fragen Node und den Antworten Nodes....

Ich will letztendlich nen Array der in der ersten Dimension den Text der entsprechenden Frage speichert und dann in der zweiten Dimension die unterschiedlichen Antworten....

Später im Skript klatsche ich das ganze wieder auf Papier...

for(.....)
Fragentext.htmlText = array[i]
for (array[i].length.... k ++)
check_box_array[i] = new Check Box()
Antwortentext.htmlText = array[i][k]

....

Wenn ich dann später die Ergebnisse speichern will häng ich einfach noch ne dritte Dimension an... und schick diese dann wieder zurück ans php....

Is ja eigentich auch kein Problem... Nur das Auslesen klappt nicht... oder besser gesagt das rein schreiben. Wenn ich nur mit trace in die xml gehe passt es perfekt... aber sobald ich dem sage er soll alles den entprechenen array befüllen kackt er ab....

Nur diese Zeile hier macht Probleme - und da auch nur der vorderste Teil
wissensabfrage_frage_name_array[i][k] = wissensabfrage_details_xml.frage[i].antwort[k];


Bezüglich der Arrays: Irgend ein Prof hat mich glaub ich Array verseucht :-)
m.franz ist offline   Mit Zitat antworten
Alt 15-08-2008, 21:24   #13 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Und das ganze Heckmeck wenn du auch einfach mit einem XML Objekt auskommst?
Omega Psi ist offline   Mit Zitat antworten
Alt 15-08-2008, 21:32   #14 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 118
Das stimmt schon.... Vielleicht sollte ich noch dazu sagen, dass es sich hier um ein verdammt grosses projekt handelt... da hat sich dieser array stil schon durchgesetzt.... Dazu kommt das alles extrem dynamisch ist und gerne mal das die Arrays sortiert verschoben gesplittet verschachtelt zusammengeführt zerlegt... werden müssen. Kann man in einem XML Objekt rumsortieren lassen? Kann vielleicht sein.... Ich fang jetzt ungern an das Ding nochmal neu aufzuziehen.....
Hast du vielleicht trotzdem nen Tip?

Mal was anderes .... Wir entwickeln Webbasierende Demogeräte für Amazon Co... Bei uns ist noch Platz im Team... Und ständig zu viel arbeit.... Bist du als Freelancer tätig?
m.franz ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele