Flash Attribute aus XML-Datei

Monopoly

Grünschnabel
Hallo,

ich habe folgendes Problem: Ich habe einen Flash-Musik-Player gebastelt (nach nem Tutorial). Funktioniert auch alles Prima, nur: Die Song-Infos zieht er sich aus einer XML-Datei, die nach folgendem Schema aufgebaut ist:
HTML:
<songs>
 <song titel="titel1" url="url"\>
 <song titel="titel2" url="url2"\>
</songs>

Jetzt will ich aber, dass er sich die Infos aus der XML-Datei nach diesem Schema holt:
HTML:
<songs>
 <song>
  <titel>Titel1</titel>
  <url>URL1</url>
 </song>
 <song>
  <titel>Titel2</titel>
  <url>URL2</url>
 </song>
</songs>

Wie muss ich dazu das Actionscript (relevanter Auszug am Ende des Posts) ändern? Ich blicke das mit den ChildNodes nicht...

MfG Monopoly

Actionscript-Auszug:
Code:
songList_xml.onLoad = Delegate.create(this, songListLoaded);
function songListLoaded():Void {
	var mainNode:XMLNode = this.songList_xml.firstChild;
	this.songList_ls.dataProvider = listData;
	for (var i = 0; i<resourceCount; i++) {
		listData.addItem({label:i+1+". "+mainNode.childNodes[i].attributes.title, data:mainNode.childNodes[i].attributes.url});
	}
	//songList_ls.selectedIndex = 0;
	//songList_ls.dispatchEvent({type:"change", target:songList_ls});
}
 
Hi,
das mußt du glaub ich mit 2 for schleifen machen.
So kommst du an die eizelnen nodevalues dran:

Code:
<songs>[mainNode]
 <song>  [childNodes[0]]
  <titel>Titel1</titel> [childNodes[0].childNodes[0].firstChild.nodeValue]
  <url>URL1</url>[childNodes[0].childNodes[1].firstChild.nodeValue]
 </song>
 <song> [childNodes[1]]
  <titel>Titel2</titel>[childNodes[1].childNodes[0].firstChild.nodeValue]
  <url>URL2</url>[childNodes[1].childNodes[1].firstChild.nodeValue]
 </song>
</songs>

Hoffe ich hab jetzt kein fehler gemacht.

EDIT:
Sollte auch so gehen, also mit nur einer for schleife:
Ungetestet:

Code:
function songListLoaded():Void {
	var mainNode:XMLNode = this.songList_xml.firstChild;
	this.songList_ls.dataProvider = listData;
	for (var i = 0; i<resourceCount; i++) {
               
		listData.addItem({label:i+1+". "+mainNode.childNodes[i].childNodes[0].firstChild.nodeValue, data:mainNode.childNodes[i].childNodes[1].firstChild.nodeValue});
	}
	//songList_ls.selectedIndex = 0;
	//songList_ls.dispatchEvent({type:"change", target:songList_ls});
}
 
Zuletzt bearbeitet:
Hi,

danke für die Schnelle Hilfe.

Ich habs mit der ersteren Lösung versucht, klappt auch, aber leider nur halb:

im ersten durchlauf nimmt er sich von beiden Songs den titel attribut und im zweiten durchlauf das url-attribut. Check nicht so ganz, warum...

MfG
 
und die zweite möglichkeit, also:

Code:
listData.addItem({label:i+1+". "+mainNode.childNodes[i].childNodes[0].firstChild.nodeValue, data:mainNode.childNodes[i].childNodes[1].firstChild.nodeValue});
 
aaah... PERFEKT...

hatte es zwar genauso eingegeben, wie du in deinem letzten Post, aber mit Tippfehlern ;)

jetzt klappts..

vielenvielen Dank

MfG
 
Zurück