webForumDet fria alternativet

flerdemensionell array med xml

1 svar · 171 visningar · startad av roady

roadyMedlem sedan jan. 2002473 inlägg
#1

Tao...
Jag har ett litet problem som jag hoppas kunna få hjälp med.
Har en XML fil som ser ut såhär

<?xml version="1.0" encoding="iso-8859-1"?>
<info>
	<case id="01" working="1" artist="Destruct" album="deos" desc="Vi testar ett fint exempel">
		<music file="name1.mp3" song="nisse" time="2:30" kb="500kb" />
		<music file="name1.mp3" song="nisse" time="2:30" kb="500kb" />
		<music file="name1.mp3" song="nisse" time="2:30" kb="500kb" />
	</case>
	<case id="02" working="1" artist="Destruct" album="deos" desc="Mauching os for anotheront">
		<music file="name1.mp3" song="nisse" time="2:30" kb="500kb" />
		<music file="name1.mp3" song="nisse" time="2:30" kb="500kb" />
		<music file="name1.mp3" song="nisse" time="2:30" kb="500kb" />
		<music file="name1.mp3" song="nisse" time="2:30" kb="500kb" />
		<music file="name1.mp3" song="nisse" time="2:30" kb="500kb" />
	</case>
</info>

Sedan när jag läser in xmlfilen kör jag en funktion där jag överför allt till array. Första delen funkar jättebra (fått lite hjälp här förr, tack rödalacket ;) ) men nu när jag vill ha själva låtarna att höra till så vill jag inte bara ha en 2-d array utan en 3-d array (om man nu kan utrycka sig såhär).

koden ser ut såhär iallafall.
det som är rött är det som inte funkar... hur gör man, tänker jag rätt eller fel eller ????

var children = myXMLmusic.firstChild.childNodes;	// Plocka ut alla noder vi skall arbeta med
    for (i=0; i<children.length; i++) {					// Loopa igenom alla noder
		myArrayMusic[i] = new Array(5);					// Skapa 2-d array för infon
		
			myArrayMusic[i][0] = children[i].attributes.id;			// Id-nummret t.ex 05
			myArrayMusic[i][1] = children[i].attributes.working;	// Arbetar man med projektet eller inte 1 för nej, 0 för ja
			myArrayMusic[i][2] = children[i].attributes.artist;		// Vilket band/artist
			myArrayMusic[i][3] = children[i].attributes.album;		// albumet
			myArrayMusic[i][4] = children[i].attributes.desc		// Beskrivning
			[red]
			var musicLength;
				musicLength = children[i].childNodes.length;

				for (j=0; j<musicLength; j++){
					myArrayMusic[i][5][j] = new Array(musicLength);	// Skapa 3-d array
					
					myArrayMusic[i][5][j][0] = children[i].childNodes[j].attributes.file;	// Vad heter mp3 filen	
					myArrayMusic[i][5][j][1] = children[i].childNodes[j].attributes.song;	// Låtens namn	
					myArrayMusic[i][5][j][2] = children[i].childNodes[j].attributes.time;	// minuter och sekunder lång	
					myArrayMusic[i][5][j][3] = children[i].childNodes[j].attributes.kb;		// hur stor är den kb	
				}[/red]	
    }
roadyMedlem sedan jan. 2002473 inlägg
#2

Ändrat lite grann o nu fått det att funka lite bättre,,, men nu ifall en av mina undernoder (de där jag skriver låtarna) är färre än 3st så kommer de inte med alls ???

behöver lite hjälp här *viftar med flagg*

var children = myXMLmusic.firstChild.childNodes;	// Plocka ut alla noder vi skall arbeta med
    for (i=0; i<children.length; i++) {					// Loopa igenom alla noder
		myArrayMusic[i] = new Array(6);					// Skapa 2-d array för infon
		
			myArrayMusic[i][0] = children[i].attributes.id;			// Id-nummret t.ex 05
			myArrayMusic[i][1] = children[i].attributes.working;	// Arbetar man med projektet eller inte 1 för nej, 0 för ja
			myArrayMusic[i][2] = children[i].attributes.artist;		// Vilket band/artist
			myArrayMusic[i][3] = children[i].attributes.album;		// albumet
			myArrayMusic[i][4] = children[i].attributes.desc		// Beskrivning
			
			var musicLength;
				musicLength = children[i].childNodes.length;
				myArrayMusic[i][5] = new Array(musicLength);	// Skapa 3-d array
				
				
				for (j=0; j<musicLength; j++){
					myArrayMusic[i][5][j] = new Array();
					
						myArrayMusic[i][5][j][0] = children[i].childNodes[i].attributes.file;	// Vad heter mp3 filen	
						myArrayMusic[i][5][j][1] = children[i].childNodes[i].attributes.song;	// Låtens namn	
						myArrayMusic[i][5][j][2] = children[i].childNodes[i].attributes.time;	// minuter och sekunder lång	
						myArrayMusic[i][5][j][3] = children[i].childNodes[i].attributes.kb;		// hur stor är den kb	
				}

    }
136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)