Volledige versie bekijken : parse xml array
expuddle
%Europe/Berlin %601 %2005, 15:25
hoi,
Ik ken xml niet echt, maar ik wil een mp3 speler maken in flash met een aantal arrays die in xml worden gedefinieerd. Weet iemand how zoiets in xml eruitziet en hoe je een element dan daaruit kan halen in flash?
Roenes
%Europe/Berlin %618 %2005, 15:49
Ehmz, ik wil je gerust helpen maar ik krijg het idee dat je xml echt niet kent ipv niet echt. Oftewel, ik kan nu wel een uitleg geven maar ik denk dat je daar niet veel verder mee komt omdat je dan niet weet hoe je het moet toepassen. Kun je even aangeven wat je bv al wel over dit onderwerp weet?
- Kun je een xml document opstellen?
- Kun je xml inlezen in flash?
- Kun je xml verwerken in flash?
Als die laatste alleen niet lukt dan is het wat makkelijker uitleggen. Anders zal ik (of iemand anders) later een wat langer verhaal typen :)
expuddle
%Europe/Berlin %624 %2005, 15:59
hehe ja ik snap dat het vaag klinkt en 'echt niet' is misschien een beter omschrijving, maar ik heb eerder een xml document gemaakt en in een .fla ingeladen bij een tutorial. Dus het maken en inlezen gaan wel, laten we zeggen. Het probleem is dat ik nu een mp3 speler maak met een aantal anwijzingen die zijn gebaseerd op Flash MX 2004, terwijl ik Flash MX gebruik. Verder geen problemen behalve dat er in de aanwijzingen gebruik word gemaakt van Xpath, wat niet kan bij MX. Ik wil dat gedeelte van de actionscript weglaten en gewoon de xml inladen en gebruiken. Dit is wat er in de aanwijzingen wordt gebruikt:
function songListLoaded(success:Boolean):Void {
if(success){
//fill arrays using XPath
artists = this.plXML.selectNodes("/songs/song/@artist");
titles = this.plXML.selectNodes("/songs/song/@title");
albums = this.plXML.selectNodes("/songs/song/@album");
times = this.plXML.selectNodes("/songs/song/@playtime");
sizes = this.plXML.selectNodes("/songs/song/@filesize");
urls = this.plXML.selectNodes("/songs/song/@url");
En mijn vraag is hoe je dit kan doen voor een xml document.
Roenes
%Europe/Berlin %641 %2005, 16:23
Oke hier komt een klein voorbeeldje: :)
Stel je hebt een xml bestand dat bij iedere node het path naar het mp3tje opslaat. Dit wordt gezien vanuit de huidige folder. Stel je xml ziet er dan zo uit: (files.xml)
<bestanden>
<bestand>mp3/1.mp3</bestand>
<bestand>mp3/2.mp3</bestand>
<bestand>mp3/3.mp3</bestand>
<bestand>mp3/4.mp3</bestand>
<bestand>mp3/5.mp3</bestand>
<bestand>mp3/6.mp3</bestand>
</bestanden>
In het voorbeeld staan de mp3tjes in een submap genaamd mp3. (ik weet niet of hier een / voor moet maar het gaat even om het idee :))
Nu wil je deze xml inladen in flash. Dit gaat op de volgende manier:
var mp3xml = new XML();
mp3xml.ignoreWhite = true;
mp3xml.onLoad = function(success)
{
if(success)
{
trace("XML is goed ingeladen");
}
else trace("Fout met het inladen van de xml");
}
mp3xml.load("files.xml");
Om de xml te verwerken en op te slaan in een array zul je acties moeten zetten in de onLoad functie. Een voorbeeld kan dit zijn:
var mp3bestanden = new Array();
var mp3xml = new XML();
mp3xml.ignoreWhite = true;
mp3xml.onLoad = function(success)
{
if(success)
{
trace("XML is goed ingeladen");
for(var i = 0; i < this.firstChild.childNodes.length; ++i)
{
mp3bestanden.push(this.firstChild.childNodes[i].childNodes[0].nodeValue);
}
trace(mp3bestanden);
}
else trace("Fout met het inladen van de xml");
}
mp3xml.load("files.xml");
Nu worden alle paden in de array opgeslagen. Deze kun je gebruiken bij het inladen van de werkelijke bestanden. Maar dit moet je vanaf hier wel verder kunnen. Ik hoop dat het een en ander een beetje duidelijker wordt aan de hand van dit voorbeeld. Mocht je iets niet begrijpen, zoek dan eerst de functie op in de help van flash. Mocht je er dan alsnog niet uitkomen laat het dan maar weer horen :)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.