[Flash CS3] - XML Pfad Frage

intercorni

Erfahrenes Mitglied
Hallo,

ich verwende ein XML File zum einlesen verschiedener Informationen.
Dieses ist folgendermaßen aufgebaut:

PHP:
<?xml version='1.0' encoding='utf-8' ?>
<thema01 name="Thema 1" beschreibung="Beschreibung" >
    <frage name="Frage 1" beschreibung="Hier steht die Frage 1">
        <antwort name="Antwort1" beschreibung="Falsch" />
        <antwort name="Antwort2" beschreibung="Richtig" />
        <antwort name="Antwort3" beschreibung="Falsch" />
    </frage>
</thema01>

<thema02 name="Thema 2" beschreibung="Beschreibung" >
    <frage name="Frage 1" beschreibung="Hier steht die Frage 1">
        <antwort name="Antwort1" beschreibung="Falsch" />
        <antwort name="Antwort2" beschreibung="Richtig" />
        <antwort name="Antwort3" beschreibung="Falsch" />
    </frage>
</thema02>

Die einzelnen Infos lade ich in einzelne Arrays:

PHP:
var XMLdaten = new XML();
XMLdaten.ignoreWhite=true; 
XMLdaten.load("daten/xmltest.xml");
XMLdaten.onLoad = function(success) {

  if (success) { 
      anzahlFragen = XMLdaten.firstChild.childNodes.length;
    anzahlAntworten = []; //neues Array
    for (var i=0; i<anzahlFragen; i++) {//alle Fragen durchgehen
    //länge der Antworten Ojekte der jeweiligen Frage auslesen und ins array schreiben
    anzahlAntworten[i] = XMLdaten.firstChild.childNodes[i].childNodes.length;
    }
    
    namen = [];
    beschreibungen = [];
    fragen = [];
    themen = [];
    richtig_falsch = [];
    hauptueberschrift = [];
    for (var i=0; i<anzahlFragen; i++) {//für jede Frage
        namen[i] =[];
        beschreibungen[i] = [];
        fragen[i] = [];
        themen[i] = [];
        richtig_falsch[i] = [];
        hauptueberschrift[i] = [];
        for (var j=0; j<anzahlAntworten[i]; j++) {//für alle Antworten der jeweiligen Frage
        //auslesen
        namen[i][j] = XMLdaten.firstChild.childNodes[i].childNodes[j].attributes.name;
        beschreibungen[i][j] = XMLdaten.firstChild.childNodes[i].childNodes[j].attributes.beschreibung;
        fragen[i][j] = XMLdaten.firstChild.childNodes[i].attributes.beschreibung;
        themen[i][j] = XMLdaten.firstChild.attributes.name;
        richtig_falsch[i][j] = XMLdaten.firstChild.childNodes[i].childNodes[j].attributes.beschreibung;
        hauptueberschrift[i][j] = XMLdaten.firstChild.attributes.beschreibung;
        };
        };
  }

      }

So kann ich das Thema 01 inkl. Beschreibung, Frage und Antworten problemlos auslesen.
Das klappt allerdings nur für das Thema 01.
Wie müsste ich die Abfrage verändern, um z.B. auch an Thema02 zu kommen? In der XML gibt es übrigens 5 Themen, die ich alle auslesen müsste.
Ich freue mich über jede Hilfe.

Cornel
 
Also ein Trace auf "trace(themen[0][0]);" gibt mir z.B. "Thema 1" aus.
Aber wenn ich auf "trace(themen[1][0]);" trace, dann komme ich nicht zum "Thema 2"
Ich denke, dass das XML-File nur im ersten Thema ausgelesen wird und nicht auch das zweite. Aber wie komme ich überhaupt zum zweiten Thema?
 
Ich habe die XML Datei jetzt abgeändert, weil diese wohl falsch formatiert war:

PHP:
<?xml version='1.0' encoding='utf-8' ?>
<themen>
    <thema name="Thema 1" beschreibung="Beschreibung" >
        <frage name="Frage 1" beschreibung="Hier steht die Frage 1">
            <antwort name="Antwort1" beschreibung="Falsch" />
            <antwort name="Antwort2" beschreibung="Richtig" />
            <antwort name="Antwort3" beschreibung="Falsch" />
        </frage>
    </thema>

    <thema name="Thema 2" beschreibung="Beschreibung" >
        <frage name="Frage 1" beschreibung="Hier steht die Frage 1">
            <antwort name="Antwort1" beschreibung="Falsch" />
            <antwort name="Antwort2" beschreibung="Richtig" />
            <antwort name="Antwort3" beschreibung="Falsch" />
        </frage>
    </thema>
</themen>

Da der Aufbau nun völlig anders ist, wie komme ich nun an meine Inhalte?
Ich würde mich riesig freuen, wenn mir da jemand weiterhelfen könnte.
 
Ich habe mal eine fla mit xml datei beigefügt. Wiegesagt komme ich nicht an meine Antworten udn die Auswertung richtig/falsch dahinter.
Es fehlt wohl eine dritte Variable dafür.
 

Anhänge

  • xmltest1.zip
    5,1 KB · Aufrufe: 15
Hm, die dritte Schleife bereitet mir Schwierigkeiten, um die Antworten auszulesen, ist bestimmt ganz einfach zu setzten, jedoch mach ich es falsch:

PHP:
stop();
var XMLdaten = new XML();
XMLdaten.ignoreWhite=true; 
XMLdaten.load("xmltest1.xml");
XMLdaten.onLoad = function(success) {
      anzahlThemen = XMLdaten.firstChild.childNodes.length;//Themen
      anzahlFragen = []; //neues Array
	  anzahlAntworten = [];
      for (var i=0; i<anzahlThemen; i++) {//alle Themen durchzählen-------------------------------------
          //Anzahl der Fragen des jeweiligen Themas auslesen und ins Array schreiben
          anzahlFragen[i] = XMLdaten.firstChild.childNodes[i].childNodes.length;
      }
	  thema = [];
      fragenNr = [];
      fragen = [];
	  antworten = [];
      for (var i=0; i<anzahlThemen; i++) {//für jedes Thema
	  		thema[i] = [];
          	fragenNr[i] =[];
          	fragen[i] = [];
          	for (var j=0; j<anzahlFragen[i]; j++) {//für alle Fragen des jeweiligen Themas auslesen
				thema[i] = XMLdaten.firstChild.childNodes[i].attributes.name;
              	fragenNr[i][j] = XMLdaten.firstChild.childNodes[i].childNodes[j].attributes.name;
              	fragen[i][j] = XMLdaten.firstChild.childNodes[i].childNodes[j].attributes.beschreibung;
				anzahlAntworten[i][j] = XMLdaten.firstChild.childNodes[i].childNodes[j].childNodes.length;//alle Antworten durchzählen--------------
					for (var k=0; k<anzahlAntworten[j]; k++) {//für alle Fragen der jeweiligen Antwortenanzahl feststellen
						antworten[i][j][k] = XMLdaten.firstChild.childNodes[i].childNodes[j].childNodes[k].attributes.name;
          		}
				}
      }   
	  //trace(thema[1]); //Thema auslesen
      //trace(fragenNr[0]); //Fragen-Nummer auslesen
	  //trace(fragen[0][1]); //Fragen auslesen
	  trace(antworten);

	  }
 
Zurück