XML in Flash auslesen

Flasher111

Mitglied
hi@all,
ich bin neu hier im forum und habe zuerst mal die Tutorial und Suchfunktion benutzt. Doch leider komme ich einfach nicht mehr weiter und hoffe, dass ihr mir helfen könnt.

Wie die Überschrift schon sagt gehts um XML und Flash.
ich habe folgenden script in Flash zum Auslesen verwendet
HTML:
_root.createEmptyMovieClip("halter", 1000);
_root.createEmptyMovieClip("holder", 2000);
mein_xml = new XML();
mein_xml.ignoreWhite = true;
mein_xml.load("daten.xml");
mein_xml.onLoad = function(status) {
	if (status) {
		daten_xml = this.firstChild.firstChild.childNodes;
		for (i=0; i<this.firstChild.firstChild.childNodes.length; i++) {
			_root.halter.attachMovie("punkte", "punkte"+i, i);
			_root.halter['punkte'+i]._x = 0
			_root.halter['punkte'+i]._y = i*17;
			_root.halter['punkte'+i].inhalt_txt.text = daten_xml[i].attributes.titel;
			_root.halter['punkte'+i].link = daten_xml[i].attributes.adresse;
			//trace(daten_xml[i].attributes.titel)
		for (j=0; j<this.firstChild.firstChild[0].childNodes.length; j++)
			_root.holder.attachMovie("punkte", "punkte"+j, j);
			_root.holder['punkte'+j]._x = 300
			_root.holder['punkte'+j]._y = i*17;
			_root.holder['punkte'+j].inhalt_txt.text = daten_xml[j].attributes.titel;
			_root.holder['punkte'+j].link = daten_xml[j].attributes.adresse;
			//trace(daten_xml[i].attributes.titel)
		}
	}
}

und in meiner XML-Datei siehts so aus

HTML:
<?xml version='1.0' encoding='WINDOWS-1252' ?> <links>  <inhalt>  <menu 
titel="Flashbattle.de" adresse="http://www.flashbattle.de.de"></menu>  <menu 
titel="heise.de" adresse="http://www.heise.de"></menu>  <menu titel="waz.de" 
adresse="http://www.waz.de"></menu>  <menu titel="shortnews.de" 
adresse="http://www.shortnews.de"></menu>  <menu titel="flashstar.de" 
adresse="http://www.flashstar.de"></menu>  <menu titel="zdf.de" 
adresse="http://www.zdf.de"></menu>  </inhalt> </links>


ich weiß, dass die XML-Datei nicht vollständig ist. Hab aber keine Ahnung wie ich die zweite Tabelle zum Auslesen bringe.

Damit man sich es besser vorstellen kann, was ich meine hab ich die fla. auch mal hochgeladen.

Vielen Dank für Eure Hilfe, Mühe und was es sonst noch alles gibt:rolleyes:
 

Anhänge

  • 25277attachment.zip
    3,5 KB · Aufrufe: 38
Hallo,

ich denke mal, du möchtest verschiedene Link-Tabellen anzeigen lassen. Dafür wär aber eine vollständige XML-Datei mal kein überflüssiger Luxus gewesen ;).

Dein erster Fehler ist syntaktischer Art. Es gilt:

Code:
myXML.firstChild == myXML.childNodes[0]

firstChild ist also immer der erste Kindknoten einer XML-Struktur, ist also bereits ein einzelnes Element und hat darum keine Array-Members. Dieser Code-Schnipsel aus deinem Skript wird also undefined zurückgeben:

Code:
this.firstChild.firstChild[0].childNodes.length

Stattdessen müsste es heissen:
Code:
this.firstChild.childNodes[0].childNodes.length

Dein zweiter Fehler ist eher logischer Art. Um eine dynamische Anzahl von Tabellen auszulesen, die wiederum eine dynamische Anzahl von Einrägen beinhalten können, musst du die for-Schlaufen verschachteln. Wenn du aber bloss die beiden Tabellen anzeigen willst, reichen die beiden nacheinander laufenden for-Schlaufen. Da ich deinem Script nicht genau entnehmen konnte, welche Variante du nun eigentlich bezweckst, hab ich dir einfach mal das Script so hingebogen (pass auf die Iterator-Anpassungen auf, also j statt i), dass es deine XML-Struktur mit einem zweiten Inhalt-Tag anzeigen würde.

Code:
mein_xml.onLoad = function(status) {
	if (status) {
		for (i=0; i<this.firstChild.firstChild.childNodes.length; i++) {
			var daten_xml = this.firstChild.firstChild.childNodes;
			_root.halter.attachMovie("punkte", "punkte"+i, i);
			_root.halter['punkte'+i]._x = 0;
			_root.halter['punkte'+i]._y = i*17;
			_root.halter['punkte'+i].inhalt_txt.text = daten_xml[i].attributes.titel;
			_root.halter['punkte'+i].link = daten_xml[i].attributes.adresse;
			//trace(daten_xml[i].attributes.titel)
		}
		for (j=0; j<this.firstChild.childNodes[1].childNodes.length; j++) {
			var daten_xml = this.firstChild.childNodes[1].childNodes;
			_root.holder.attachMovie("punkte", "punkte"+j, j);
			_root.holder['punkte'+j]._x = 300
			_root.holder['punkte'+j]._y = j*17;
			_root.holder['punkte'+j].inhalt_txt.text = daten_xml[j].attributes.titel;
			_root.holder['punkte'+j].link = daten_xml[j].attributes.adresse;
			//trace(daten_xml[j].attributes.titel)
		}
	}
};

gruss
 
Zuletzt bearbeitet:
hi luke_the_duke,
vielen Dank für deine geniale Hilfe. Sorry, dass ich nicht die ganze XML-Datei hochgeladen habe wird nicht mehr vorkommen. Aber es funktioniert JUHU nochmals vielen Dank.:p :p :p :p
 
Zurück