Par
%Europe/Berlin %832 %2005, 20:58
Voor een project heb ik een generieke XML parser geschreven; er zullen vast andere manieren zijn, maar het idee wat ik had is de data zo opslaan uit de XML dat het logisch terug te vragen is. XML en XSLT's werken bijv. met /persons/person/name als padverwijzing, ik heb in flash nu:
myObj['PERSONS']['PERSON1']['NAME'] en dat werkt heel prima.
Een voorbeeld van hoe het object gemaakt wordt volgt hieronder:
myObject = new Object;
myObject['PERSON1'] = new Object;
myObject['PERSON1']['NAME'] = "Debug";
myObject['PERSON2'] = new Object;
myObject['PERSON2']['NAME'] = "Par";
myObject['PERSON3'] = new Object;
myObject['PERSON3']['NAME'] = "WYSINWIG";
for (thisObject in myObject)
{
trace(thisObject);
}
Oftewel, een object dat weer meerdere objecten bevat. Het is net een array, maar net even anders; zover ik weet in ieder geval.
Als je deze code leest, lijkt het mij logisch dat de uitvoer van de trace zal zijn:
person1, person2, person3
Dat is niet het geval, ik krijg terug:
person3, person2, person1
Het lijkt dus wel of het als een stack werkt en het last in first out principe wordt toegepast.
Dit was totaal niet mijn bedoeling; ik wil de data gewoon in dezelfde volgorde hebben als het XML document.
Vragen zijn:
1. waarom geeft de for loop de objecten "omgekeerd" terug, is hier een specificatie van te vinden?
2. hoe krijg ik de volgorde wel weer normaal
Wellicht dat mijn werkwijze niet juist is, maar het zou prima werken wanneer flash de boel niet om zou draaien.
Ik heb gegoogled en rondgevraagd op #flash op Efnet, maar kennelijk is hier niet veel over bekend. Misschien dat hier iemand is die mij verder kan helpen.
myObj['PERSONS']['PERSON1']['NAME'] en dat werkt heel prima.
Een voorbeeld van hoe het object gemaakt wordt volgt hieronder:
myObject = new Object;
myObject['PERSON1'] = new Object;
myObject['PERSON1']['NAME'] = "Debug";
myObject['PERSON2'] = new Object;
myObject['PERSON2']['NAME'] = "Par";
myObject['PERSON3'] = new Object;
myObject['PERSON3']['NAME'] = "WYSINWIG";
for (thisObject in myObject)
{
trace(thisObject);
}
Oftewel, een object dat weer meerdere objecten bevat. Het is net een array, maar net even anders; zover ik weet in ieder geval.
Als je deze code leest, lijkt het mij logisch dat de uitvoer van de trace zal zijn:
person1, person2, person3
Dat is niet het geval, ik krijg terug:
person3, person2, person1
Het lijkt dus wel of het als een stack werkt en het last in first out principe wordt toegepast.
Dit was totaal niet mijn bedoeling; ik wil de data gewoon in dezelfde volgorde hebben als het XML document.
Vragen zijn:
1. waarom geeft de for loop de objecten "omgekeerd" terug, is hier een specificatie van te vinden?
2. hoe krijg ik de volgorde wel weer normaal
Wellicht dat mijn werkwijze niet juist is, maar het zou prima werken wanneer flash de boel niet om zou draaien.
Ik heb gegoogled en rondgevraagd op #flash op Efnet, maar kennelijk is hier niet veel over bekend. Misschien dat hier iemand is die mij verder kan helpen.